1.3.7 postinstall

如果读者还记得Mongoose中的钩子(Hook),一定会知道pre和post的意思。一般来说,pre是“之前”的意思,post是“之后”的意思,因此npm提供的postinstall从字面上来看,即在安装之后执行回调操作。

我们先来看一下npm提供了哪些回调操作,具体如下。

〇 prepublish:在模块发布之前运行。

〇 postpublish:在模块发布之后运行。

〇 preinstall:在模块安装之前运行。

〇 postinstall:在模块安装之后运行。

类似的模块生命周期都有对应的回调钩子实现。下面我们来看一下如何利用npm的回调操作实现一些具体的功能。

大家都知道,Express是Node.js社区下载量最大的Web框架,其中的核心是中间件,它遵循小而美的设计哲学,因此非常精简。从express-generator的角度来看,这个框架只能做些“小打小闹”的事情,如果要设计一个复杂的大规模系统,就免不了要考虑代码结构、模块拆分、组件构成等问题。模块可以被当作业务插件,对于一个框架来说,如果用户要在代码中引用模块,直接调用即可。

比如在一个boilerplate项目里,如果要安装插件,需要在终端安装webstorm-disable-index模块,命令如下。

在webstorm-disable-index模块的postinstall里要执行一段Node.js代码,当前目录已经是终端目录(即process.cwd()),所以可以在当前目录下完成文档生成等操作,代码如下。

安装完成之后,我们需要对项目里的文件或配置进行插件登记,类似这样的功能是可以放到postinstall里完成的。完成以上操作后,剩下的就是编写Node.js代码了。