节点工作区 — 需要本地包

phi*_*ipp 11 node.js npm npm-workspaces

我使用的是node/npmworkspaces的功能,布局是这样的:

\n
.\n+-- package.json\n`-- packages\n   `-- p1\n      `-- package.json\n   `-- p2\n      `-- package.json\n
Run Code Online (Sandbox Code Playgroud)\n
./package.json\n\n{\n  \xe2\x80\xa6\n  "workspaces": [\n    "./packages/*"\n  ],\n  \xe2\x80\xa6\n  "dependcies": { \xe2\x80\xa6 }\n  \xe2\x80\xa6\n}\n
Run Code Online (Sandbox Code Playgroud)\n

npm install一切都进展顺利。但现在我想将包添加p1为 package 的依赖项p2。但我该怎么做呢?我天真地尝试过:

\n
./packages/p2/package.json\n\n{\n  \xe2\x80\xa6\n  "dependencies": {\n    "p1": "*"\n  }\n  \xe2\x80\xa6\n}\n\n
Run Code Online (Sandbox Code Playgroud)\n

但这会在安装时产生错误,告诉我p1找不到注册表。

\n

Kly*_*ton 15

更新 - 使用 npm cli
\n从项目根目录运行

\n
npm i ./packages/p1 -w packages/p2\n
Run Code Online (Sandbox Code Playgroud)\n

./必须的,否则 npm 会将安装混淆为从 npm 注册表安装和从本地目录安装。

\n

手动解决方法
\n通过在p2 package.json 中提供p1\ 的相对路径来手动添加p1作为本地依赖项,因此在您的示例中:

\n
./packages/p2/package.json\n\n{\n  \xe2\x80\xa6\n  "dependencies": {\n    "p1": "file:../p1"\n  }\n  \xe2\x80\xa6\n}\n
Run Code Online (Sandbox Code Playgroud)\n

然后您需要npm installp2包中运行。

\n

我从 LinkedIn 的一篇文章中找到了这个解决方案,当我使用 Lerna 启动 JavaScript monorepo 时,我希望自己知道这些事情

\n