在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


GitHub 加速计划 / js / json
41.72 K
6.61 K
下载
适用于现代 C++ 的 JSON。
最近提交(Master分支:1 个月前 )
960b763e 2 个月前
8c391e04 5 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐