Node.js —— package.json中的script
在Node.js中,模块是一个库或框架,也是一个Node.js项目。Node.js项目遵循模块化的架构,当我们创建了一个Node.js项目,意味着创建了一个模块,这个模块的描述文件,被称为package.json。
1、npm run
npm 允许在package.json文件里面,使用scripts字段定义脚本命令。scripts字段是一个对象。它的每一个属性,对应一段脚本。
{
"scripts": {
"build": "node build.js"
}
}
下面两条命令等同
$ npm run build
$ node build.js
2、pre ,post命令
在每个命令前都会执行对应命令的pre+scriptname 脚本,每个命令结束后会执行对应买了的post+scriptname脚本。如果没有定义,则不会执行对应的pre ,post命令。这便于我们在执行某些命令前、后做一些操作,比如build前清空目录,build后做一些压缩之类的事
scripts: {
"prebuild" : "echo \" this is pre build \"",
"build" : "echo \" this is build \"",
"postbuild" : "echo \" this is post build \""
}
输入命令
$ npm run build
输出结果
this is pre build
this is build
this is post build
3、默认的脚本
npm会默认设置一些script的值,比如start和install,当然你可以覆盖这2个值。
1、start:
如果你在项目里根目录有一个server.js,然后你又没自己定义start script,那么npm run start,就会执行server.js
//server.js
console.log("this is server.js");
输入命令
$ npm run start
输出结果
this is server.js
同时可以设置prestart 和poststart脚本
scripts : {
"prestart" : "echo \" this is pre start \"",
"poststart" : "echo \" this is post start \""
}
输入命令
$ npm run start
输出结果
this is pre start
this is server.js
this is post start
2、install:
当你的模块被安装时,会默认执行这个脚本。前提是你没自己定义install脚本,然后有一个binding.gyp 文件。具体的npm会执行。这个脚本可以帮助node模块编译 c++ 模块。
"install": "node-gyp rebuild"
4、生命周期事件
prepublish:在模块被发布前,其实在你安装本地包也会触发
publish, postpublish:在发布后执行
preinstall:模块被安装前执行
install, postinstall:模块安装后
preuninstall, uninstall:模块被卸载前执行
postuninstall:模块卸载后执行
preversion, version:获取版本号前执行
postversion:获取版本号之后执行
pretest, test, posttest:执行test脚本时会执行
prestop, stop, poststop:在脚本结束时执行
prestart, start, poststart:调用start时执行
prerestart, restart, postrestart:在执行restart时会调用
restart脚本比较特殊,如果你设置了restart脚本则只会执行:prerestart, restart, postrestart
更多推荐
所有评论(0)