Npm Script 是一个任务执行者。 Npm 是在安装 Node.js 时附带的包管理器,Npm Script 则是 Npm 内置的一个功能,允许在 package.json 文件里面使用 scripts 字段定义任务:
package.json
scripts
{ "scripts": { "dev": "node dev.js", "pub": "node build.js" } }
里面的 scripts 字段是一个对象,每一个属性对应一段脚本,以上定义了两个任务 dev 和 pub。 Npm Script 底层实现原理是通过调用 Shell 去运行脚本命令,例如执行 npm run pub 命令等同于执行命令 node build.js。
dev
pub
npm run pub
node build.js
Npm Script 还有一个重要的功能是能运行安装到项目目录里的 node_modules 里的可执行模块,例如在通过
node_modules
npm i -D webpack
安装到项目中后,是无法直接在项目根目录下通过命令 webpack 去执行 Webpack 构建的,而是要通过命令 ./node_modules/.bin/webpack 去执行。
webpack
./node_modules/.bin/webpack
Npm Script 能方便的解决这个问题,只需要在 scripts 字段里定义一个任务,例如:
{ "scripts": { "build": "webpack" } }
Npm Script 会先去项目目录下的 node_modules 中寻找有没有可执行的 webpack 文件,如果有就使用本地的,如果没有就使用全局的。 所以现在执行 Webpack 构建只需要通过执行 npm run build 去实现。
npm run build
Webpack 只是一个打包模块化代码的工具,并没有提供任何任务管理相关的功能。 但在实际场景中通常不会是只通过执行 webpack 就能完成所有任务的,而是需要多个任务才能完成。
举一个常见的例子,要求如下:
可以看出要求1和要求2是相互冲突的,其中任务3又依赖任务2。要满足以上三个要求,需要定义三个不同的任务。
接下来通过 Npm Script 来定义上面的3个任务:
"scripts": { "dev": "webpack-dev-server --open", "dist": "NODE_ENV=production webpack --config webpack_dist.config.js", "pub": "npm run dist && rsync dist" },
含义分别是:
npm run dev
dist
NODE_ENV=production
使用 Npm Script 的好处是把一连串复杂的流程简化成了一个简单的命令,需要时只需要执行对应的那个简短的命令,而不用去手动的重复整个流程。 这会大大的提高我们的效率和降低出错率。
本实例提供项目完整代码
Copyright© 2013-2020
All Rights Reserved 京ICP备2023019179号-8