考虑以下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
。所以我必须至少在两个不同的地方编辑该名称:脚本的主属性和dev属性。是否可以在package.json?
main
属性的值
答案 0 :(得分:7)
在Linux下
"scripts": {
"dev": "./node_modules/.bin/nodemon $npm_package_main"
},
在Windows下
"scripts": {
"dev": "./node_modules/.bin/nodemon %npm_package_main%"
},
答案 1 :(得分:3)
首先,你可以写下这个:
"scripts": {
"dev": "nodemon app.js"
},
npm run dev
会自动将nodemon
解析为./node_modules/.bin/nodemon
其次,你实际上只写这个:
"scripts": {
"dev": "nodemon ."
},
.
将自动解析为app.js
,因为您已经指定了"main": "app.js"
如果"main": "app.js"
中有package.json
(在任何文件夹中,无论是顶级文件夹还是子文件夹),那么任何节点进程都会将app.js
文件标识为要加载的默认文件(在require
调用或通过cli执行),就像index.js
自动执行一样。
答案 2 :(得分:1)
是的,您可以在执行脚本时引用package.json
中的任何字段值。
但是有一个区别,当您在Windows下运行脚本时,应使用%npm_package_field%
,而在基于Unix的操作系统上,则应使用$npm_package_field
。
其中field
是package.json
的字段名称。
在Windows下,您可以使用:
"dev": "./node_modules/.bin/nodemon %npm_package_main%"
在Unix下:
"dev": "./node_modules/.bin/nodemon $npm_package_main"