我正在尝试从shell脚本中添加或编辑package.json中的变量.所以如果我有这样的package.json:
{
"name": "my-project",
"description": "Project by @DerZyklop",
"version": "0.0.0",
...
Run Code Online (Sandbox Code Playgroud)
我想要一个像这样的命令
npm config set foo bar
Run Code Online (Sandbox Code Playgroud)
这增加了一个新的领域
{
"name": "my-project",
"description": "Project by @DerZyklop",
"foo": "bar",
"version": "0.0.0",
...
Run Code Online (Sandbox Code Playgroud)
...但不幸的是npm config set只编辑了~/.npmrc而不是我的package.json.
enr*_*cis 70
这package.json只是一个json文件,因此您可以使用该工具json.要安装它,请使用:
npm install -g json
Run Code Online (Sandbox Code Playgroud)
然后,您可以就地编辑文件.更多信息在这里.
$ cat package.json
{
"name": "my-project",
"description": "Project by @DerZyklop",
"version": "0.0.0"
}
$ json -I -f package.json -e 'this.foo="bar"'
json: updated "package.json" in-place
$ cat package.json
{
"name": "my-project",
"description": "Project by @DerZyklop",
"version": "0.0.0",
"foo": "bar"
}
Run Code Online (Sandbox Code Playgroud)
Shl*_*Shl 52
您确实有一个本机 NPM 命令:
npm pkg set 'scripts.test'='jest'
Run Code Online (Sandbox Code Playgroud)
当您想要共享命令时,这确实很有帮助。您可以简单地分享这个工具,而不是要求别人安装一些 cli 工具。
顺便说一句,当您使用NPM 工作区时,它会更有帮助,在这种情况下,您可以一起更改所有包:
npm pkg set 'scripts.test'='jest' -ws
Run Code Online (Sandbox Code Playgroud)
Aka*_*ash 10
我只想更新version其中的属性package.json,这对我有用:
# this sets the version
# in package.json to 1.0.2
npm version 1.0.2 # creates a git-tag too
npm version 1.0.2 --no-git-tag-version # only changes the version without creating a git-tag
Run Code Online (Sandbox Code Playgroud)
jq '.foo="bar"' package.json | sponge package.json
Run Code Online (Sandbox Code Playgroud)
使用环境变量:
jq --arg h "$HOMEPAGE" '.homepage=$h' package.json | sponge package.json
Run Code Online (Sandbox Code Playgroud)
如果不想安装任何东西,也可以使用单行脚本修改package.json:
node -e "let pkg=require('./package.json'); pkg.homepage='${CI_PAGES_URL}'; require('fs').writeFileSync('package.json', JSON.stringify(pkg, null, 2));"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20655 次 |
| 最近记录: |