如何从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模块? 你可能勾选了一个恶意软件扫描器:-),但它可能工作。