我正在处理一个NPM工作空间节点项目。为了部署工作区中的一个包,我希望运行npm install并获得一个node_modules目录作为该包的子目录,这样包就会自动包含。
请考虑下面的目录结构:
node_modules
packages
├ cloud-app
│ ├ src
│ └ package.json
├ helpers
│ ├ src
│ └ package.json
├ business-logic
│ ├ src
└ └ package.json
package.json只有一个重叠的node_modules非常适合在单次开发中使用。但是要部署cloud-app包,我需要如下所示的结构:
packages
├ cloud-app
│ ├ node_modules
│ ├ src
│ └ package.json
├ helpers
│ ├ src
│ └ package.json
├ business-logic
│ ├ src
└ └ package.json
package.json然后,我可以像往常一样上传cloud-app目录,而不必将我的NPM工作区暴露给供应商的(不兼容) CD管道。
这有可能吗?这里的正确命令或程序是什么?
发布于 2022-07-05 19:08:28
虽然我没有找到一种标准的方法来实现这一点,但有一种对我来说有点麻烦的方法:
复制node_modules目录允许包充当独立模块。但是,有一个警告:node_modules目录包含工作区中每个包的符号链接。因此,当循环被复制到包中并遵循符号链接时,循环就开始了。为了防止这种情况,我们首先必须删除我们的包。因此,部署脚本可以如下所示:
rm ./node_modules/cloud-app
cp -rL ./node_modules ./cloud-app/node_modules
# deploy cloud-app here我在提出上述问题时考虑到了这一点,但仍然很高兴知道是否有任何规范的、得到支持的方法来做到这一点。
发布于 2022-07-05 19:54:50
你可以尝试的东西就是@youzen在这个帖子上带来的东西。
基本上,在存储库的根文件夹中,您可以运行:
npm install --prefix <path/to/prefix_folder> -g
因此,将在指定的文件夹中创建node_modules文件夹。
您可以访问上面提到的链接,以获得其他解决方案,希望这有帮助!
发布于 2022-11-02 15:04:43
这似乎很管用。尝试workspaces参数:
cd <my_project_root>
npm i --workspaces=falsehttps://docs.npmjs.com/cli/v9/commands/npm-install#workspaces
https://stackoverflow.com/questions/72874410
复制相似问题