Node.js 是否可以引用package.json中的属性
考虑以下package.json:Node.js 是否可以引用package.json中的属性,node.js,package.json,Node.js,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": { "expr
{
"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"
},
窗下
"scripts": {
"dev": "./node_modules/.bin/nodemon %npm_package_main%"
},
JSON本身不支持变量 这取决于使用JSON的程序,它可以决定是将任何特定模式作为变量处理,还是以某种方式替换为其他文本 虽然其他答案提到对变量(依赖于操作系统)使用
$
或%%
符号,但我认为您也可以通过以下方式解决问题:
您可以编写nodemon.
,而不是nodemon app.js
:
"main": "app.js",
"scripts": {
"dev": "nodemon ."
}
也将自动解析为app.js
如果您在
package.json
中有一个“main”:“app.js”
(在任何文件夹中,无论是顶级文件夹还是子文件夹中),那么任何节点进程都会将app.js
文件标识为要加载的默认文件(在require
调用中或通过cli执行),就像它自动执行index.js
一样。是,执行脚本时,可以引用package.json
中的任何字段值。但有一点不同,当您在windows下运行脚本时,您应该使用
%npm\u package\u field%
,而对于基于unix的操作系统,您应该使用$npm\u package\u field
其中
field
是package.json
中的字段名
在windows下,您可以使用:
"dev": "./node_modules/.bin/nodemon %npm_package_main%"
在unix下:
"dev": "./node_modules/.bin/nodemon $npm_package_main"
package.json只是一个文件。只需使用适当的节点库将其作为文件加载,使用JSON对象对其进行解析,进行更改,然后将其字符串化回文件中。这完全不是他们所要求的。如果有一种方法适用于任何操作系统,那就太好了。