【前端调试】如何优雅调试npm script

645 阅读2分钟

npm script运行及调试技巧

前端项目中基本上离不开npm script来运行编译、构建、lint项目,并且大多数脚手架已经提供了开箱即用的scripts,如Vue cli以及后起之秀Vite更是把简单做到了极致,这也产生3个问题:

  1. 很多同学并不知道运行一个命令之后,背后到底做了什么事情?
  2. 开发中需要调试vue.config.js相关配置的时候,如果通过console.log打印配置,运行指令后编译信息会将打印信息覆盖掉。
  3. 当业务需要自定义cli时,如何通过调试快速定位问题?

基于这个背景,本节的主题就是掌握调试npm script技巧。

每一个可执行包里面都会包含bin文件夹,package.json中有bin字段,@vue/cli-service为例。

1.jpg

这个文件夹有什么作用呢?

用于存放可执行命令行脚本,打开vue-cli-service.js#!/usr/bin/env node表示执行脚本的解析器为node,除此之外,其他常见解析器还包括PythonRubyPerl

2.jpg

当使用npm install包之后,对应的脚本会统一放到node_modules/.bin下面

4.jpg

所以,本质上运行npm run serve,其实就是执行node node_modules/.bin/vue-cli-service.js

3.jpg

简单点也可以直接用npx vue-cli-service跑,它会去找node_modules/.bin下面的本地命令,如果没有的话会从npm下载之后再执行。

最常用的方式还是通过配置scripts来运行

5.jpg

既然是通过node来执行,所以调试node跟调试scripts代码没有什么区别,可以通过VsCode来调试 在.vscode中起一个launch.json,选择用node启动程序

6.jpg

修改program指向调试脚本

7.jpg

还有没有比较简单的方式呢?

有,vsCode提供了可以直接通过npm启动的方式进行调试

8.jpg

指定runtimeArgs为脚本运行参数即可

9.jpg

还有没有更加简单的方式呢? 还真有,无需创建launch.json,不得不说vsCode提供的开发体验是yyds~

package.json中的scripts字段上面,直接点击进入调试

10.jpg

选择需要调试的命令

11.jpg

这里选择run serve,一样可以进行调试

13.jpg

12.jpg

总结一下

介绍了npm script是执行node_modules/.bin/*下面的node脚本,同时也可以直接通过node node_modules/.bin/*进行运行,或者是npx xxx来简化操作。

最后介绍两种通过VsCode debugger来进行调试脚本,创建launch.json或直接通过package.json scripts属性的调试入口开启运行/调试。