npm run dev 为什么会启动服务器
这个问题的实质是用 node 调用 http 模块启用了一个 web 服务器(webpack-dev-server 临时在本地开启一个 node 服务)
- 当执行
npm run dev
后,npm
会去package.json
里边的scripts
字段里找dev
这个命令 - 如果配置了的话,就会执行对应的配置
vue-cli-service serve
(vue-cli-service
也是一个命令) 3.当npm
的脚本执行的时候就会去执行当前项目目录下的node_modules/.bin/vue-cli-service.cmd
这个文件 4.vue-cli-service.cmd
这个文件又会用node
执行@vue\cli-service\bin\vue-cli-service.js
文件 5.vue-cli-service.js
这个文件里加载着(两层加载)对应的命令处理文件(@vue\cli-service\bin\commands\serve.js
文件写着可执行的命令) 6.然后你就会发现它加载了webpack-dev-server
这个包(也就是说vue-cli-service
是基于这个包实现的) 7.然后再看webpack-dev-server
这个包,它又是基于express
实现的 8.express
又是一个node
框架,它起的 web 服务器底层调用的实际是node
的http
这个核心模块 9.这时就出现一个调用链条
npm run dev->vue-cli-service serve->webpack-dev-server->express->node->http
vue-cli 2
的配置少了vue-cli-service
这层封装
参考文章:https://segmentfault.com/q/1010000020388384 https://juejin.cn/post/6971723285138505765