获取目录列表并在每个目录中运行npm install的跨平台方式

时间:2015-08-06 12:11:13

标签: node.js powershell cmd

我正在运行next命令为modules目录中的每个模块执行npm install

if (process.platform === 'win32') {
    return 'powershell -noprofile -command "Get-ChildItem ../modules | ? { $_.PSIsContainer } | % { Push-Location $_.FullName;  npm install; Pop-Location }"';
} else {
     return 'for dir in ../modules/*; do (cd $dir && pwd && npm install); done'
}

有更优雅的方法吗?应该是跨平台的

1 个答案:

答案 0 :(得分:1)

此脚本应适用于Windows和Linux系统:

www.mse.mk/FreeMseFeeds/service/FreeMSEFeeds.svc/ticker/JSON/9538ac69-2c99-45ba-bbd4-90931ca0cc7d

脚本列出​​目录内容,过滤掉非目录,然后在每个目录中执行var fs = require('fs'); var path = require('path'); var child_process = require('child_process'); fs.readdirSync(path.join(__dirname, 'modules') .filter(function(dir) { return fs.statSync(path.join(__dirname, 'modules', dir)).isDirectory(); }) .forEach(function(dir) { child_process.spawnSync('npm', ['install'], { cwd: path.join(__dirname, 'modules', dir)) }); });