首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >运行"npm安装“,就好像包不在工作区一样

运行"npm安装“,就好像包不在工作区一样
EN

Stack Overflow用户
提问于 2022-07-05 19:08:28
回答 3查看 202关注 0票数 1

我正在处理一个NPM工作空间节点项目。为了部署工作区中的一个包,我希望运行npm install并获得一个node_modules目录作为该包的子目录,这样包就会自动包含。

请考虑下面的目录结构:

代码语言:javascript
复制
node_modules
packages
  ├ cloud-app
  │  ├ src
  │  └ package.json
  ├ helpers
  │  ├ src
  │  └ package.json
  ├ business-logic
  │  ├ src
  └  └ package.json
package.json

只有一个重叠的node_modules非常适合在单次开发中使用。但是要部署cloud-app包,我需要如下所示的结构:

代码语言:javascript
复制
packages
  ├ cloud-app
  │  ├ node_modules
  │  ├ src
  │  └ package.json
  ├ helpers
  │  ├ src
  │  └ package.json
  ├ business-logic
  │  ├ src
  └  └ package.json
package.json

然后,我可以像往常一样上传cloud-app目录,而不必将我的NPM工作区暴露给供应商的(不兼容) CD管道。

这有可能吗?这里的正确命令或程序是什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-07-05 19:08:28

虽然我没有找到一种标准的方法来实现这一点,但有一种对我来说有点麻烦的方法:

复制node_modules目录允许包充当独立模块。但是,有一个警告:node_modules目录包含工作区中每个包的符号链接。因此,当循环被复制到包中并遵循符号链接时,循环就开始了。为了防止这种情况,我们首先必须删除我们的包。因此,部署脚本可以如下所示:

代码语言:javascript
复制
rm ./node_modules/cloud-app
cp -rL ./node_modules ./cloud-app/node_modules
# deploy cloud-app here

我在提出上述问题时考虑到了这一点,但仍然很高兴知道是否有任何规范的、得到支持的方法来做到这一点。

票数 0
EN

Stack Overflow用户

发布于 2022-07-05 19:54:50

你可以尝试的东西就是@youzen在这个帖子上带来的东西。

基本上,在存储库的根文件夹中,您可以运行:

npm install --prefix <path/to/prefix_folder> -g

因此,将在指定的文件夹中创建node_modules文件夹。

您可以访问上面提到的链接,以获得其他解决方案,希望这有帮助!

票数 0
EN

Stack Overflow用户

发布于 2022-11-02 15:04:43

这似乎很管用。尝试workspaces参数:

代码语言:javascript
复制
cd <my_project_root>
npm i --workspaces=false

https://docs.npmjs.com/cli/v9/commands/npm-install#workspaces

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72874410

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档