Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 是否可以引用package.json中的属性_Node.js_Package.json - Fatal编程技术网

Node.js 是否可以引用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

考虑以下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"
  },
窗下

"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对象对其进行解析,进行更改,然后将其字符串化回文件中。这完全不是他们所要求的。如果有一种方法适用于任何操作系统,那就太好了。