我可以从Node.js中运行的javascript文件安装NPM软件包吗?例如,我想要一个脚本,让我们称它为“ script.js”,该脚本以某种方式(…是否使用NPM …)安装了通常可通过NPM获得的软件包。在此示例中,我想安装“ FFI”。(npm安装ffi)
确实可以以编程方式使用 npm ,并且在文档的较早版本中对此进行了概述。此后,它已从官方文档中删除,但仍在源代码控制中使用以下语句:
尽管可以通过编程方式使用npm,但其API仅供CLI使用,并且不能保证其适用于任何其他目的。如果要使用npm可靠地执行某些任务,最安全的做法是使用适当的参数调用所需的npm命令。 npm的语义版本是指CLI本身,而不是基础API。 即使npm的版本指示根据semver尚未进行重大更改,也不能保证内部API保持稳定 。
尽管可以通过编程方式使用npm,但其API仅供CLI使用,并且不能保证其适用于任何其他目的。如果要使用npm可靠地执行某些任务,最安全的做法是使用适当的参数调用所需的npm命令。
npm的语义版本是指CLI本身,而不是基础API。 即使npm的版本指示根据semver尚未进行重大更改,也不能保证内部API保持稳定 。
在原始文档中,以下是所提供的代码示例:
var npm = require('npm') npm.load(myConfigObject, function (er) { if (er) return handlError(er) npm.commands.install(['some', 'args'], function (er, data) { if (er) return commandFailed(er) // command succeeded, and data might have some info }) npm.registry.log.on('log', function (message) { ... }) })
由于 npm 存在于node_modules文件夹中,因此您可以require('npm')像其他任何模块一样使用它来加载它。要安装模块,您将需要使用npm.commands.install()。
node_modules
require('npm')
npm.commands.install()
如果您需要查看源代码,那么它也位于GitHub上。这是代码的完整工作示例,等同于npm install不使用任何命令行参数即可运行:
npm install
var npm = require('npm'); npm.load(function(err) { // handle errors // install module ffi npm.commands.install(['ffi'], function(er, data) { // log errors or data }); npm.on('log', function(message) { // log installation progress console.log(message); }); });
请注意,install函数的第一个参数是数组。阵列的每个元素都是 npm 会尝试安装的模块。
npm-cli.js在源代码管理的文件中可以找到更高级的用法。
npm-cli.js