在两个本地节点项目之间共享代码

问题描述 投票:0回答:1

我的目录结构如下

./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文件? 如果可能的话,我希望不要使用符号链接。

javascript node.js
1个回答
0
投票

你可以在这里使用的解决方案之一是使用 纱线工作区.

这将允许你在不同的应用程序中共享你的包,所以你可以有这样的结构。

- 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),让它只是一个包。

这样就可以了,但如果你正在寻找一些更可扩展的解决方案来管理依赖关系,我真的建议你尝试一下。匆匆.

© www.soinside.com 2019 - 2024. All rights reserved.