nan*_*doj 9 javascript node.js npm package.json
我正在尝试npm install使用预安装脚本运行命令package.json.我知道它是反模式但我需要以root身份运行一些脚本.
通过添加.npmrc包含unsafe-perm = true到我的根目录的文件,它工作正常.但它不能通过在我的package.json文件中添加配置属性来工作:
{
"name": "foo",
"version": "1.4.4",
"config": {
"unsafe-perm":true
},
"scripts" : {
"preinstall" : "npm install -g bower"
}
}
// It is not working
Run Code Online (Sandbox Code Playgroud)
根据NPM配置文档,可以在我的包文件中添加此属性.我想明白为什么它不起作用.
添加该属性时,您将使用前缀将其添加到脚本的环境中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=
$
Run Code Online (Sandbox Code Playgroud)
这是出于安全原因,有点。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
$
Run Code Online (Sandbox Code Playgroud)
npm不过,这可能是一个错误,所以我建议不要依赖这种行为。您可以使用与 不同的用户root吗?
来源:npm@2.6.1在 OSX 上测试。我是npm问题跟踪器https://github.com/npm/npm/issues 的一名支持志愿者。
| 归档时间: |
|
| 查看次数: |
11227 次 |
| 最近记录: |