npm从父目录安装
我有一个像这样的目录结构: /a/b/c
目录c
包含package.json
并且应该包含node_modules
。
我如何执行内部目录中a
npm install
?
我试过这样的方式: npm --prefix b/c install b/c
但是这样,所有符号链接直接在c
中创build,而不是默认的node_modules/.bin
。
有什么办法可以实现吗?
节点:6.2.2
npm:3.10.2
在你a
目录下的package.json
使用npm预安装钩子可能是在这种情况下的最佳select。
scripts: { preinstall: `cd b/c && npm install` }
这样,在目录a
运行npm install
也将执行c
目录安装并提供无缝的开发体验。
有点矫枉过正,但可能有用…
在recursion的帮助下,您可以findnode_modules
。
你可以在父目录中运行这个文件来在子目录中查找node_modules
并传递npm参数。
注意 :在Windows上testing
var child_process = require('child_process'); var fs = require('fs'); var path = require('path'); var safe = 0; let args = process.argv.splice(2).toString().replace(/,/g ,' '); function recurse(_path){ safe ++; if(safe > 5000){ console.log('directory may be too large') return } if(/node_modules$/.test(_path)){ let cwd = path.resolve(__dirname ,_path) console.log('found node_modules at '+cwd) child_process.exec(`start cmd.exe /k npm ${args}`,{cwd}) return } let directoryList = fs.readdirSync(_path); directoryList.forEach(function(nextDir){ if(fs.statSync(_path+'/'+nextDir).isFile()){ return } if(/^\./.test(nextDir)){ //.folder beginging with . return } recurse(_path+'/'+nextDir); }) } recurse('./' )