玩转npm script

什么是npm脚本?

npm 允许在package.json文件里面,使用scripts字段定义脚本命令,这些定义在package.json里面的脚本,就称为npm脚本

可以使用npm run查看当前项目的所有脚本命令

常用命令:

npm init      //初始化工程
npm run       //run script
npm install   //安装依赖
npm update    //升级依赖
npm bin       //查看bin文件目录
npm link      //将工程软链接到全局
npm publish   //发布包
npm deprecate //废弃包

1、npm scripts访问内部变量

1)bash脚本:可以通过$npm_package_*取值:

$npm_package_name          #name in package.json
$npm_package_version       #version in package.json
$npm_package_config_varl   #拿到npm的配置变量,即npm config get XXX命令返回的值或者 
                           #package.json里面的config对象
          

注意:package.json里面的config对象可以被环境变量覆盖,例如:

{ 
  "name" : "foo",
  "config" : { "port" : "8080" },
  "scripts" : { "start" : "node server.js" }
}

上面代码中,npm_package_config_port变量返回的是8080。这个值可以用下面的方法覆盖。

$ npm config set foo:port 80

2)在项目代码中,可以通过环境变量process.env对象拿到package.json的字段值:

console.log(process.env.npm_package_name);  //name in package.json
console.log(process.env.npm_package_version);  //version in package.json

2、对npm scripts二次包装过的命令传参

利用--透传参数

{
  "scripts":{
           "serve":"serve ./build",
           "serve:prod":"npm run serve -- -l 80"  //传递-l参数
      }
}

3、脚本钩子

1)、脚本钩子类似于hook,当事件触发时,对应的钩子逻辑也被触发 git hook(对commit message做校验),web hook等

2)、部分npm内置脚本钩子如下:(pre-*和post-*)

preinstall     //用户执行npm install命令时,先执行该脚本
postinstall    //用户执行npm install命令时,安装结束后执行该脚本
preuninstall   //卸载一个模块前执行
postuninstall  //卸载一个模块后执行
prelink        //link模块前执行
postlink       //link模块后执行
pretest        //运行npm test命令前执行
posttest       //运行npm test命令后执行

除了内置脚本钩子,我们也可以按规则自定义的添加钩子

4、npm提供一个npm_lifecycle_event变量,返回当前正在运行的脚本名称,比如pretest、test、posttest等等,可以利用这个变量,在同一个脚本文件里面为不同的npm scripts命令编写代码

const TARGET = process.env.npm_lifecycle_event
if(TARGET === 'test'){
   //执行相应的代码
}
if(TARGET === 'pretest'){
  //执行相应的代码
}
if(TARGET === 'posttest'){
//执行相应的代码
}

5、执行顺序

1)如果想在一条script里顺序执行两个命令(前一个任务执行完才执行下一个任务),可以使用&&

2)如果想在一条script里并行执行两个命令(同时的平行执行),可以使用&符号

参考链接:http://www.ruanyifeng.com/blog/2016/10/npm_scripts.html

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值