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属性的调试入口开启运行/调试。