我们为了调用便捷,方便项目的移动、复制、打包等,保证不同版本包之间的相互依赖,常常采用本地安装的方式,但是在正常项目发布过程中,node_modules 因为占用内存过大,并不会发给用户,所以需要用户通过package.json 中对包的描述来下载 node_modules。
例如:package.json中有如下描述:

我们就可以通过终端命令行执行以下语句来下载 node_modules :

这时候项目中已经有了 node_modules ,但因为是本地安装,有些包不能通过命令行直接执行,那么我们要如何执行程序呢?
这种情况等下我们就通过 package.json scripts 脚本来运行。
举个例子,当下面这一段代码需要用到 nodemon 命令,但是 nodemon 是在本地安装,即它安装在 node_modules 中,无法通过nodemon a在全局命令行执行。

于是我们通过脚本运行,首先在 package.json scripts 中写入脚本名和命令内容:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0mWXxpTI-1659613285082)(0804笔记.assets/image-20220804175920858.png)]](https://1000bd.com/contentImg/2022/08/10/095851633.png)
然后在终端通过命令npm run 脚本名 就可以运行命令内容,脚本运行命令优先查找当前的 node_modules 路径下是否有这个 nodemon 命令。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-e03pJJOW-1659613285084)(0804笔记.assets/image-20220804191325967.png)]](https://1000bd.com/contentImg/2022/08/10/095851893.png)
这样就可以成功运行 nodemon 命令了。
有些脚本名是特殊的,比如 start install ,直接通过 npm 脚本名运行就可以了。例如:
install
当脚本名为install时,直接在终端输入npm install就可以下载并自动运行命令内容。
start
当脚本名为start时,如下如所示,当执行npm start时,表示用 nodemon 工具包执行 a.js文件。

如果 nodemon 后面不加 js 文件,则 nodemon 默认执行 main 中的入口文件:

即,脚本中 nodemon 没有带文件名,就会执行时寻找package.json中main指定的入口文件名。