添加该属性时,会将其添加到脚本环境中,并带有前缀npm_config_package
:
$ cat package.json
{
"config": { "unsafe-perm": true }
}
$ npm run env | grep perm
$ npm run env | grep perm
npm_package_config_unsafe_perm=true
npm_config_unsafe_perm=true
$ sudo npm run env | grep perm
npm_package_config_unsafe_perm=true
npm_config_unsafe_perm=
$
这是出于安全原因。注册表中的任意包npm
允许您更改npm
的配置设置(例如,如果它设置前缀/etc
并安装一个名为 的文件怎么办passwd
)
但是,您仍然可以通过在脚本行中设置环境变量来解决它(这在 Windows 上不起作用):
$ cat package.json
{
"config": { "unsafe-perm": true },
"scripts": { "foo": "npm_config_unsafe_perm=true env" }
}
$ npm run foo | grep unsafe_perm
npm_config_unsafe_perm=true
npm_package_config_unsafe_perm=true
npm_lifecycle_script=npm_config_unsafe_perm=true env
npm_package_scripts_foo=npm_config_unsafe_perm=true env
$ sudo npm run foo | grep unsafe_perm
npm_config_unsafe_perm=true
npm_package_config_unsafe_perm=true
npm_lifecycle_script=npm_config_unsafe_perm=true env
npm_package_scripts_foo=npm_config_unsafe_perm=true env
$
不过,这可能是一个错误npm
,所以我建议不要依赖这种行为。您可以使用与 不同的用户root
吗?
来源:npm@2.6.1
在 OSX 上测试。我是npm
问题跟踪器的支持志愿者,https://github.com/npm/npm/issues。