在 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 的知名属性之一(例如 test
, start
),您需要使用 npm run <script-name>
而不是 npm <script-name>
.
关于node.js - 从 Node.js 脚本中读取 npm 配置值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48158126/