浅析npmrunrve命令
本地开发⼀般通过执⾏ npm run rve 命令来启动项⽬,那这⾏命令到底存在什么魔法?我们来⼀探究竟。
根据这篇⽂章思路:
得知,npm run rve 实际上会执⾏ vue-cli-rvice rve(该⽂件位于 node_d),查看该⽂件,发现最终会执⾏ node vue-cli-rvice.js rve(该⽂件位于 node_modules@vuecli-rviceinue-cli-rvice.js)。
vue-cli-rvice.js就是我们的切⼊⼝。
红楼梦阅读感想关键代码:
const Service = require('../lib/Service')
清明节的传统习俗//...
const rvice = new Service(...
/
/...
rvice.run(command, args, rawArgv).catch(err => {
error(err)
})
根据这篇⽂章思路:已开头的四字成语
实际执⾏的⽂件为 rve.js(该⽂件位于 node_modules@vuecli-rvicelibcommandsrve.js)
关键代码:
const WebpackDevServer = require('webpack-dev-rver')
//...
const webpackConfig = solveWebpackConfig()教官我再也不敢了
/
写人的优秀作文/...
const compiler = webpack(webpackConfig)
const rver = new WebpackDevServer(compiler, ...
烤鸡翅怎么烤
//...
rver.listen(port, host, err => {
if (err) {
装修施工方案reject(err)
}
})
可以很清楚的看到,rve.js 中使⽤了 webpack-dev-rver 作为http服务器,启动并监听端⼝提供服务(不知道webpack-dev-rver的话可以暂且将它理解为 nginx)。
这么下来,思路就清晰了,npm run rve 最最终的⽬的就是启动⼀个 webpack-dev-rver服务器。
webpack-dev-rver原⽣的配置繁多,学习成本不⼩,既然vue-cli将webpack-dev-rver集成到脚⼿架中,那⼀定是帮我们做了很多事情。列举⼏个点:
1. 主页⾯
WebpackDevServer构造器第⼆个⼊参,historyApiFallback属性 -> genHistoryApiFallbackRewrites,设置了根路径会重定向到index.html(即为主页⾯)。
2. ⼊⼝⽂件
WebpackDevServer构造器第⼀个⼊参 -> webpackConfig -> solveWebpackConfig ->
resolveChainableWebpackConfig -> webpackChainFns
追踪 webpackChainFns 的来源,可以发现 ba.js (node_modules@vuecli-rvicelibconfiga.js)会设置 ./src/main.js 为⼊⼝⽂件。
webpackConfig
.mode(‘development’)
.
context(t)
.entry(‘app’)
.add(’./src/main.js’)
等等等等…
必修一化学知识点总结另外,我们在fig.js上的配置或多或少都会映射到webpack-dev-rver的配置上。这个当然就要参看fig.js的⽂档啦。⼩结
1. 命令依赖链:npm run rve -> node_d rve -> node node_modules@vuecli-rviceinue-cli-rvice.js rve
2. vue-cli 的开发环境实际上使⽤了 webpack-dev-rver 模块实现。
3. fig.js 的配置会作⽤到 webpack-dev-rver 上。
references: