node.js - 从 Node.js 脚本中读取 npm 配置值

标签 node.js npm

在 Node.js 中,我想读取 npm 用来确定包下载位置的 registry 属性的值。

const registry = someApi.get('registry');

我想知道这样我就可以创建一个 preinstall确保开发人员通过本地 Artifactory 下载软件包的脚本实例而不是直接来自 npm.org。

const EXPECTED_REGISTRY = 'https://example.com/artifactory'
const registry = someApi.get('registry'); 
if (registry !== EXPECTED_REGISTRY) {
   console.log('Please configure your .npmrc to use Artifactory');
   console.log('See http://example.com/instructions');
   process.exit(1);
}

一种方法是使用 npm config list --json。必须有一个 API 会给我相同的结果。我只是找不到它。

最佳答案

虽然已经有一个可接受的答案,但我会为后代发布一个替代答案。

如果您使用 npm 运行脚本命令和脚本添加到 scripts您的 package.json 文件的属性,那么您的 NPM 配置属性应该可以通过模式 process.env.npm_config_* 被您的 NodeJS 脚本访问.

例如,给定这个 package.json 文件:

{
  "scripts": {
    "start": "node -p \"process.env.npm_config_foo\""
  }
}

当运行以下命令时:

npm config set foo bar
npm start

输出是:

> @ start /Users/anonymous/projects/my-package
> node -p "process.env.npm_config_foo"

bar

请注意,如果您的 scripts property 不是 NPM 的知名属性之一(例如 teststart ),您需要使用 npm run <script-name>而不是 npm <script-name> .

引用:https://docs.npmjs.com/misc/config

关于node.js - 从 Node.js 脚本中读取 npm 配置值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48158126/

相关文章:

javascript - 使用cheerio获取div的所有子 Node ?

node.js - 将数组推送到 mongodb 的数组字段中

javascript - yarn /NPM : installing package versions that are compatible to certain dependency version

javascript - 如何从 npm 声明 javascript 子模块的类型?

node.js - 如何填充 Mongoose 中的嵌套对象?

javascript - 如何从由 no-js 类组成的网页中转储表格数据?

javascript - `npm install`是否支持并发运行?

node.js - 使用作用域包运行 npx

node.js - 删除 gulp 并重新开始

javascript - Raven 不使用 Sentry 中的源映射来处理 TS/JS 代码