npm script
是 Node.js 的包管理工具 npm 提供的功能,用于在 package.json
文件中定义自定义的命令和脚本。它使得在项目中执行常见的开发任务变得更加简便和一致。下面是对 npm script
的详细理解:
1. 基本概念
定义:npm scripts
是在 package.json
文件的 scripts
字段中定义的一组命令。你可以在这里定义任何你想要的命令,并通过 npm run <script>
执行它们。
{
"scripts": {
"start": "node server.js",
"test": "jest",
"build": "webpack --config webpack.config.js"
}
}
2. 常见的 npm 脚本
启动脚本 (start
): 这是一个特殊的脚本,可以通过 npm start
直接运行。通常用来启动应用程序或开发服务器。
"scripts": {
"start": "node app.js"
}
测试脚本 (test
): 另一个特殊的脚本,npm test
会默认执行这个脚本。通常用来运行测试用例。
"scripts": {
"test": "mocha"
}
构建脚本 (build
): 用来构建项目,比如打包前端代码、编译 TypeScript 等。
"scripts": {
"build": "webpack"
}
3. 执行顺序和生命周期
4. 脚本中使用的命令和工具
可以使用任意命令:脚本中可以使用任何可执行的命令,比如 node
、npm
、webpack
、babel
等。
"scripts": {
"lint": "eslint .",
"format": "prettier --write 'src/**/*.{js,jsx}'"
}
跨平台支持:为了在不同操作系统(Windows、Linux、macOS)上兼容,有时需要用到跨平台的工具如 cross-env
来设置环境变量。
"scripts": {
"start": "cross-env NODE_ENV=development node server.js"
}
5. 脚本的参数传递
传递参数:可以将参数传递给脚本,通过 --
符号分隔。例如:
npm run build -- --env=production
在 package.json
中,build
脚本可以通过 process.argv
获取到这些参数。
6. 环境变量
设置环境变量:可以在脚本中设置环境变量来影响脚本的行为。
"scripts": {
"start": "NODE_ENV=production node app.js"
}
在 Windows 上,环境变量的设置方式略有不同,需要使用 cross-env
或类似工具。
7. 脚本的复用
复用命令:可以将复杂的命令拆分成多个脚本,或者将常用的命令提取到脚本中,避免在多个地方重复编写命令。
"scripts": {
"lint": "eslint src",
"format": "prettier --write src",
"fix": "npm run lint && npm run format"
}