javascript - 在两个本地节点项目之间共享代码
问题描述
我有以下目录结构
./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 文件?如果可能的话,我宁愿不使用符号链接。
解决方案
您可以在此处使用的解决方案之一是使用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)并使其成为一个包。
推荐阅读
- visual-c++ - 将字符串转换为 BSTR
- javascript - 条件 ng-click 中的函数和变量赋值
- haskell-stack - 停止“堆栈安装”构建没有 exe 依赖的内部库?
- python - 查找 scipy.ndimage 的 gaussian_filter 使用的权重或内核
- reactjs - 使用自定义请求标头反应传单 WMSTileLayer
- ios - 如何使用 Swift 从多个按钮中一次仅突出显示一个按钮
- python - 如何在帧上裁剪多个感兴趣区域的矩形
- javascript - 从 JSON GraphQL 错误获取数据:TypeError:无法读取 null 的属性“地图”
- python - 颜色阈值:为什么蒙版会根据指定的限制产生巨大差异?
- java - 如何在spring boot中按顺序加载@Configuration类