我具有以下目录结构
./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文件?如果可能的话,我宁愿不要使用符号链接。
答案 0 :(得分:0)
您可以在此处使用的一种解决方案是使用yarn workspaces。
这将允许您在各个应用程序之间共享软件包,因此您可以采用以下结构:
- 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将了解您在工作空间中的依赖关系,因此它将使您包括它们并轻松进行所有链接。除此之外,您甚至可以将共享程序包发布到某个程序包注册表(NPM / Github / whatever),并使其成为一个程序包。