我可以从 node 中运行的javascript文件安装NPM包吗.js?例如,我想要一个脚本,让我们称之为"script.js",它以某种方式(…是否使用NPM…)安装通常可通过NPM获得的软件包.在这个例子中,我想安装"FFI".(npm安装ffi)

推荐答案

以编程的方式使用npm确实是可能的,在较旧版本的文档中也有概述.它已从官方文档中删除,但仍存在于源代码管理中,声明如下:

尽管npm可以通过编程方式使用,但它的API是供用户使用的

npm的语义版本指的是CLI本身,而不是

在原始文档中,以下是提供的代码示例:

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().

如果你需要查看源代码,那么它也在GitHub上.下面是一个完整的代码工作示例,相当于在没有任何命令行参数的情况下运行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函数的第一个参数是array.数组的每个元素都是npm将try 安装的模块.

更高级的用法可以在源代码管理的npm-cli.js文件中找到.

Node.js相关问答推荐

无法验证叶签名|无法验证第一个证书

可以删除一个mongodb catch块

CloudTasksClient在Firebase Function % s onDocumentCreated中实例化时导致错误

Jest由于UUID而无法解析测试,即使在Jest中启用ESModule支持后也是如此

GitLab SAST中的Nodejcan未找到匹配项

如何在MEVN堆栈中结合创建和更新表单流程?

无法生成仅具有生产依赖项的 node 类型脚本项目

Nestjs重写子类dto nodejs中的属性

Amplify 部署的应用程序出现TypeError: handler is not a function错误,但它在本地运行

如何获取文件的中间值?

Docker node_modules 文件夹上的 React 应用程序不可用

Typescript 条件语句不过滤值?

如何使用 node.js 将两个或多个 API 请求组合成一个端点并表达

配额超出了每分钟的 Sheets API 写入请求数. node .js

node和mongoDB聚合数据时的输入字段函数

`npm install` 以Killed结尾

在多个文件 node.js 之间共享和修改变量

有人在 NodeJS 中实现过 wiki 吗?

chart.js 无法创建图表:无法从给定项目获取上下文

使用 Node.js 和 Express 进行简单的 API 调用