npm script运行及调试技巧
前端项目中基本上离不开npm script
来运行编译、构建、lint项目,并且大多数脚手架已经提供了开箱即用的scripts
,如Vue cli
以及后起之秀Vite
更是把简单做到了极致,这也产生3
个问题:
- 很多同学并不知道运行一个命令之后,背后到底做了什么事情?
- 开发中需要调试
vue.config.js
相关配置的时候,如果通过console.log
打印配置,运行指令后编译信息会将打印信息覆盖掉。 - 当业务需要自定义cli时,如何通过调试快速定位问题?
基于这个背景,本节的主题就是掌握调试npm script
技巧。
每一个可执行包里面都会包含bin
文件夹,package.json
中有bin
字段,@vue/cli-service
为例。
这个文件夹有什么作用呢?
用于存放可执行命令行脚本,打开vue-cli-service.js
,#!/usr/bin/env node
表示执行脚本的解析器为node
,除此之外,其他常见解析器还包括Python
、Ruby
、Perl
。
当使用npm install
包之后,对应的脚本会统一放到node_modules/.bin
下面
所以,本质上运行npm run serve
,其实就是执行node node_modules/.bin/vue-cli-service.js
简单点也可以直接用npx vue-cli-service
跑,它会去找node_modules/.bin
下面的本地命令,如果没有的话会从npm
下载之后再执行。
最常用的方式还是通过配置scripts
来运行
既然是通过node来执行,所以调试node跟调试scripts
代码没有什么区别,可以通过VsCode
来调试
在.vscode
中起一个launch.json
,选择用node
启动程序
修改program
指向调试脚本
还有没有比较简单的方式呢?
有,vsCode
提供了可以直接通过npm启动的方式进行调试
指定runtimeArgs
为脚本运行参数即可
还有没有更加简单的方式呢?
还真有,无需创建launch.json
,不得不说vsCode
提供的开发体验是yyds
~
在package.json
中的scripts
字段上面,直接点击进入调试
选择需要调试的命令
这里选择run serve
,一样可以进行调试
总结一下
介绍了npm script
是执行node_modules/.bin/*
下面的node
脚本,同时也可以直接通过node node_modules/.bin/*
进行运行,或者是npx xxx
来简化操作。
最后介绍两种通过VsCode debugger
来进行调试脚本,创建launch.json
或直接通过package.json scripts
属性的调试入口开启运行/调试。