在嵌套子文件夹中安装npm包的最正确方法是什么?
my-app
/my-sub-module
package.json
package.json
当npm install在my-app中运行时,在/my-sub-module中自动安装包的最佳方法是什么?
在嵌套子文件夹中安装npm包的最正确方法是什么?
my-app
/my-sub-module
package.json
package.json
当npm install在my-app中运行时,在/my-sub-module中自动安装包的最佳方法是什么?
当前回答
任何可以获取目录列表并运行shell命令的语言都可以为您完成此任务。
我知道这不是OP想要的答案,但这是一个永远有效的答案。你需要创建一个子目录名数组,然后循环遍历它们并运行npm i,或者任何你需要运行的命令。
作为参考,我尝试了npm I **/,它只是安装了父目录中所有子目录中的模块。这很不直观,但不用说,这不是你需要的解决方案。
其他回答
只是作为参考,以防人们遇到这个问题。你现在可以:
添加包。Json到子文件夹中 在main package.json中安装这个子文件夹作为reference-link:
NPM安装——保存路径/到/my/子文件夹
[macOS、Linux用户]:
我创建了一个bash文件来安装项目和嵌套文件夹中的所有依赖项。
find . -name node_modules -prune -o -name package.json -execdir npm install \;
解释:在根目录中,排除node_modules文件夹(即使在嵌套文件夹中),找到包含包的目录。Json文件,然后运行NPM install命令。
如果你只是想找到指定的文件夹(例如:abc123, def456文件夹),运行如下:
find ./abc123/* ./def456/* -name node_modules -prune -o -name package.json -execdir npm install \;
用例1:如果你想在每个子目录中运行npm命令(每个包。Json是),你将需要使用postinstall。
因为我经常使用npm-run-all,我用它来保持它的美观和简短(在postinstall的部分):
{
"install:demo": "cd projects/demo && npm install",
"install:design": "cd projects/design && npm install",
"install:utils": "cd projects/utils && npm install",
"postinstall": "run-p install:*"
}
这有一个额外的好处,我可以一次性安装,或单独安装。如果你不需要这个或者不希望npm-run-all作为依赖项,请查看demisx的答案(在postinstall中使用subshell)。
用例2:如果你将从根目录运行所有的npm命令(并且,例如,不会在子目录中使用npm脚本),你可以简单地安装每个子目录,就像你安装任何依赖一样:
npm install path/to/any/directory/with/a/package-json
在后一种情况下,如果您找不到任何node_modules或package-lock,请不要感到惊讶。所有的包都将安装在根目录node_modules中,这就是为什么你不能从你的任何子目录运行你的NPM命令(需要依赖)。
如果您不确定,用例1总是有效的。
如果您知道嵌套子目录的名称,我更喜欢使用post-install。在package.json:
"scripts": {
"postinstall": "cd nested_dir && npm install",
...
}
接受的答案是有效的,但是你可以使用——prefix在选定的位置运行npm命令。
"postinstall": "npm --prefix ./nested_dir install"
——prefix适用于任何npm命令,而不仅仅是install。
还可以查看当前前缀with
npm prefix
并将全局安装(-g)文件夹设置为
npm config set prefix "folder_path"
也许是TMI,但你懂的…