是否可以在 package.json 中引用 属性
Is it possible to reference a property in package.json
考虑以下 package.json:
{
"name": "expressapp",
"version": "1.0.0",
"description": "",
"main": "app.js",
"scripts": {
"dev": "./node_modules/.bin/nodemon app.js"
},
"author": "me",
"license": "ISC",
"dependencies": {
"express": "^4.13.4",
"mongodb": "^2.1.7"
},
"devDependencies": {
"nodemon": "^1.9.1"
}
}
现在我想将我的 app.js
重命名为 index.js
。因此,我必须至少在两个不同的地方编辑该名称:脚本的 main 属性 和 dev 属性。是否可以在package.json中引用main
属性的值?
在Linux
之下
"scripts": {
"dev": "./node_modules/.bin/nodemon $npm_package_main"
},
在Windows
之下
"scripts": {
"dev": "./node_modules/.bin/nodemon %npm_package_main%"
},
JSON本身不支持变量
由使用 JSON 的程序决定是将任何特定模式视为变量还是以某种方式替换为其他文本。
虽然其他答案提到对变量使用 $
或 %%
符号(依赖于 OS),但我认为您也可以通过以下方式解决您的问题:
而不是 nodemon app.js
你可以只写 nodemon .
:
"main": "app.js",
"scripts": {
"dev": "nodemon ."
}
.
也会自动解析为 app.js
如果您在 package.json
中有一个 "main": "app.js"
(在任何文件夹中,无论是顶级文件夹还是子文件夹),那么任何节点进程都会将 app.js
文件识别为默认文件加载(在 require
调用中或通过 cli 执行),就像它自动 index.js
一样。
是的,您可以在执行脚本时引用 package.json
中的任何字段值。
但是有一点不同,当你在 windows 下编写 运行 脚本时,你应该使用 %npm_package_field%
而对于基于 unix 的 OS 你应该使用 $npm_package_field
.
其中 field
是来自 package.json
.
的字段名称
在windows下,您可以使用:
"dev": "./node_modules/.bin/nodemon %npm_package_main%"
Unix 下:
"dev": "./node_modules/.bin/nodemon $npm_package_main"
考虑以下 package.json:
{
"name": "expressapp",
"version": "1.0.0",
"description": "",
"main": "app.js",
"scripts": {
"dev": "./node_modules/.bin/nodemon app.js"
},
"author": "me",
"license": "ISC",
"dependencies": {
"express": "^4.13.4",
"mongodb": "^2.1.7"
},
"devDependencies": {
"nodemon": "^1.9.1"
}
}
现在我想将我的 app.js
重命名为 index.js
。因此,我必须至少在两个不同的地方编辑该名称:脚本的 main 属性 和 dev 属性。是否可以在package.json中引用main
属性的值?
在Linux
之下"scripts": {
"dev": "./node_modules/.bin/nodemon $npm_package_main"
},
在Windows
之下"scripts": {
"dev": "./node_modules/.bin/nodemon %npm_package_main%"
},
JSON本身不支持变量
由使用 JSON 的程序决定是将任何特定模式视为变量还是以某种方式替换为其他文本。
虽然其他答案提到对变量使用 $
或 %%
符号(依赖于 OS),但我认为您也可以通过以下方式解决您的问题:
而不是 nodemon app.js
你可以只写 nodemon .
:
"main": "app.js",
"scripts": {
"dev": "nodemon ."
}
.
也会自动解析为 app.js
如果您在 package.json
中有一个 "main": "app.js"
(在任何文件夹中,无论是顶级文件夹还是子文件夹),那么任何节点进程都会将 app.js
文件识别为默认文件加载(在 require
调用中或通过 cli 执行),就像它自动 index.js
一样。
是的,您可以在执行脚本时引用 package.json
中的任何字段值。
但是有一点不同,当你在 windows 下编写 运行 脚本时,你应该使用 %npm_package_field%
而对于基于 unix 的 OS 你应该使用 $npm_package_field
.
其中 field
是来自 package.json
.
在windows下,您可以使用:
"dev": "./node_modules/.bin/nodemon %npm_package_main%"
Unix 下:
"dev": "./node_modules/.bin/nodemon $npm_package_main"