如何从nodejs脚本安装npm包?
如何从nodejs脚本安装npm包?
问题不在于通过terminal简单安装 npm包,
它是关于通过nodejs脚本安装的 :
不是关于这个: npm install express
,而是关于有内容npm install express
install.js
文件,我将像node install.js
一样执行,之后它将在本地文件夹中安装Express模块。
抱歉,Google和DuckDuckGo今天不是我的朋友
主要的问题是在我的小工具自动本地安装所需的软件包,因为全局包不在Windows中工作。
检查commander.js它允许您使用节点编写命令行应用程序。
然后你可以使用exec
模块。
假设你把以下内容放在install.js
,你只需要: ./install.js
install.js
,它会为你运行npm install
。
#!/usr/bin/env node var program = require('commander'); var exec = require('child_process').exec; var run = function(cmd){ var child = exec(cmd, function (error, stdout, stderr) { if (stderr !== null) { console.log('' + stderr); } if (stdout !== null) { console.log('' + stdout); } if (error !== null) { console.log('' + error); } }); }; program .version('0.1.3') .option('i, --install ', 'install packages') .parse(process.argv); if (program.install) { run('npm install'); } var count = 0; // If parameter is missing or not supported, display help program.options.filter(function (option) { if(!(option.short == process.argv[2])) count++ }); if(count == program.options.length) program.help();
希望这可以帮助!
注:我不认为这符合你的问题的所有要求,因为最后你说,你不能findnpm
…所以也许你的问题会更好题为“如何安装NMP包没有NPM? –yikes! 但它解决了标题,“如何从nodejs脚本安装npm包?”
我刚刚看到另一个替代scheme:模块npmi 。 虽然这仍然是另一个模块依赖项,但它至less可以在没有* nix shell脚本环境的情况下工作,我认为这里的其他答案(关于commander.js
)的确如此。 而且,如果您查看npmi.js
的代码,您会发现它很短,只是直接在节点脚本中使用npm模块 – 如果您不想添加npmi模块,您可以自己做。
所以在我们的例子中,我们需要一种不需要* nix shell脚本来安装模块(以支持Windows用户)的方式,这很适合这个账单。
如果你不能require('npm')
这仍然不能帮助你。 我唯一能想到的就是尝试可能的绝对path…你可以require('C:\Program Files\Node\packages\x
)`,或者任何存储节点全局包的地方(每个用户? 。 在try / catch或者testing这个文件的存在方面,先试试几次尝试,然后在find全局包的实际安装位置时,试着要求npm模块? 你可能勾选了一个恶意软件扫描器:-),但它可能工作。