npm script
npm基础篇
1、初始化npm包:npm init
2、npm初始化生成的package.json基本配置信息:
package name: 包名称
version: 版本号
author: 作者
description: 描述
entry point: 入口文件
test command: 执行命令
git repository: 仓库地址
keywords: 项目关键字
license: 许可协议
3、scripts字段:
使用npm run xxx或者npm xxx(xxx是指scripts对象中的键名)
运行基本步骤:
(1)从package.json中读取scripts对象中的所有配置
(2)以传给npm run的第一个参数作为键名在scripts对象中进行查找,如果没找到则报错
(3)在系统默认的shell中执行对应的命令
如果不带参数直接执行npm run则会列出所有可以执行的命令
4、常见的scripts中的执行命令
eslint:可定制的js代码检查
stylelint:可定制的样式文件检查
jsonlint:json文件语法检查
…
5、多个script命令共同执行
多个script命令串行:使用&&(例子:npm run eslint && npm run test)
多个scripts命令并行,使用&(例子:npm run eslint & npm run test)
也可以使用npm-run-all实现更轻量和简洁的多命令运行
进阶篇
1、npm script为命令执行增加了钩子脚本,即pre与post钩子脚本
如运行npm run test的时候,分为三个阶段:
(1)检查是否存在pretest命令,有则执行
(2)检查是否存在test命令,有则执行
(3)检查是否存在posttest命令,有则执行
2、在npm script中使用预定义变量
可以通过运行npm run env查看完整的变量列表,变量的使用遵循shel里面的语法
直接在npm script中给想要引用的变量前面加上$符号即可,如$npm_package_name
3、在npm script中使用自定义变量
可以在package.json中添加自定义变量并且进行使用,如下:
“config”:{“port”:3000}
“scripts”:{“test”:”opn http://localhost:/$npm_package_config_port"}
4、实现npm script跨平台兼容(linux、mac、windows平台命令不相同)
(1)文件系统操作的跨平台兼容
rimraf或del-cli用来删除文件与目录,实现类似于rm -rf的功能
cpr用于拷贝文件和目录,实现类似于cp -r的功能
make-dir-cli用于创建吗目录,实现类似于mkdir -p的功能
(2)用cross-var引用变量
在linux与windows中引用变量的方式是不同的
linux是$npm_package_name,windows是%npm_package_name%
安装cross-var依赖后只需要在原始命令之前加上cross-var,然后用引号将整个命令包起来就可以
(3)用cross-env设置环境变量
不同平台的环境变量语法也是不相同的
安装cross-env依赖后之间在命令行之前加上cross-env即可
实战篇
1、npm script为命令执行增加了钩子脚本,即pre与post钩子脚本
如运行npm run test的时候,分为三个阶段:
(1)检查是否存在pretest命令,有则执行
(2)检查是否存在test命令,有则执行
(3)检查是否存在posttest命令,有则执行
2、在npm script中使用预定义变量
可以通过运行npm run env查看完整的变量列表,变量的使用遵循shel里面的语法
直接在npm script中给想要引用的变量前面加上$符号即可,如$npm_package_name
3、在npm script中使用自定义变量
可以在package.json中添加自定义变量并且进行使用,如下:
“config”:{“port”:3000}
“scripts”:{“test”:”opn http://localhost:/$npm_package_config_port"}
4、实现npm script跨平台兼容(linux、mac、windows平台命令不相同)
(1)文件系统操作的跨平台兼容
rimraf或del-cli用来删除文件与目录,实现类似于rm -rf的功能
cpr用于拷贝文件和目录,实现类似于cp -r的功能
make-dir-cli用于创建吗目录,实现类似于mkdir -p的功能
(2)用cross-var引用变量
在linux与windows中引用变量的方式是不同的
linux是$npm_package_name,windows是%npm_package_name%
安装cross-var依赖后只需要在原始命令之前加上cross-var,然后用引号将整个命令包起来就可以
(3)用cross-env设置环境变量
不同平台的环境变量语法也是不相同的
安装cross-env依赖后之间在命令行之前加上cross-env即可