Skip to main content

npm run dev 为什么会启动服务器

这个问题的实质是用 node 调用 http 模块启用了一个 web 服务器(webpack-dev-server 临时在本地开启一个 node 服务)

  1. 当执行npm run dev后,npm 会去package.json 里边的 scripts字段里找dev这个命令
  2. 如果配置了的话,就会执行对应的配置 vue-cli-service servevue-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 服务器底层调用的实际是nodehttp这个核心模块 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