我们为了调用便捷,方便项目的移动、复制、打包等,保证不同版本包之间的相互依赖,常常采用本地安装的方式,但是在正常项目发布过程中,node_modules 因为占用内存过大,并不会发给用户,所以需要用户通过package.json 中对包的描述来下载 node_modules。
例如:package.json中有如下描述:
我们就可以通过终端命令行执行以下语句来下载 node_modules :
这时候项目中已经有了 node_modules ,但因为是本地安装,有些包不能通过命令行直接执行,那么我们要如何执行程序呢?
这种情况等下我们就通过 package.json scripts 脚本来运行。
举个例子,当下面这一段代码需要用到 nodemon 命令,但是 nodemon 是在本地安装,即它安装在 node_modules 中,无法通过nodemon a
在全局命令行执行。
于是我们通过脚本运行,首先在 package.json scripts 中写入脚本名和命令内容:
然后在终端通过命令npm run 脚本名
就可以运行命令内容,脚本运行命令优先查找当前的 node_modules 路径下是否有这个 nodemon 命令。
这样就可以成功运行 nodemon 命令了。
有些脚本名是特殊的,比如 start install ,直接通过 npm 脚本名
运行就可以了。例如:
-
install
当脚本名为
install
时,直接在终端输入npm install
就可以下载并自动运行命令内容。 -
start
当脚本名为
start
时,如下如所示,当执行npm start
时,表示用 nodemon 工具包执行a.js
文件。如果 nodemon 后面不加 js 文件,则 nodemon 默认执行 main 中的入口文件:
即,脚本中 nodemon 没有带文件名,就会执行时寻找package.json中main指定的入口文件名。