我的目录结构如下
./app1/app1.js
./app1/package.json
./app1/node_modules
./app2/app2.js
./app2/package.json
./app2/node_modules
./shared/share.js
app1和app2都拉入了share.js。
// app1.js
const share = require('../shared/share.js')
share.js
中定义的模块,在app1和app2的 package.json
// share.js
const toml = require('toml')
当运行 node app1.js
Error: Cannot find module 'toml'
我如何在这些应用程序之间共享share.js文件? 如果可能的话,我希望不要使用符号链接。
你可以在这里使用的解决方案之一是使用 纱线工作区.
这将允许你在不同的应用程序中共享你的包,所以你可以有这样的结构。
- project1
-- package.json (deps for project1)
- project2
-- package.json (deps for project2)
- sharedPackage
-- package.json (deps for shared)
- package.json (your root of project deps where you define workspaces)
现在你可以把你的共享包作为常规的依赖关系来使用了!
在你的某个地方 project1/package.json
"dependencies": {
"sharedPackage": "1.0.0"
}
并在项目中使用 project1/index.js
const shared = require('sharedPackage');
shared.doSomething();
Yarn会知道你的工作空间里面的依赖关系,所以它会让你把它们包含进来,并且无痛地进行所有的链接。更多的是,你甚至可以将你的共享包发布到一些包注册表(NPMGithubwhatever),让它只是一个包。