vue cli3源码解析

本文详细解析了vue-cli3的源码,包括脚手架的入口点Service.js、架构初始化过程、环境变量加载顺序及常用webpack插件。重点讨论了NODE_ENV、BASE_URL等关键环境变量的作用,并介绍了HotModuleReplacementPlugin和webpack.DefinePlugin等功能。
摘要由CSDN通过智能技术生成

vue-cli3 源码解析

脚手架代码入口点

从package.json文件中可以看到"vue-cli-service": "bin/vue-cli-service.js"
目录结构

Service.js 指令、配置文件管理类 new Service(context)

constructor (context, {
    plugins, pkg, inlineOptions, useBuiltIn } = {
   }){
   
    // ...
}

PluginAPI.js 指令api,new PluginAPI(id, service)

//service是Service.js导出的实例对象
constructor (id, service) {
   
    this.id = id
    this.service = service
}
// 在init方法中初始化PluginAPI的方法从这段代码中可以看出循环初始化PluginAPI的参数service都是同一个this
// 使用了单例模式,使多个PluginAPI实例的service指向同一个Service实例
this.plugins.forEach(({
    id, apply }) => {
   
    apply(new PluginAPI(id, this), this.projectOptions)
})

options.js 参数配置项

commands

// 指令目录这个目录下返回的都是一个函数function(api,options) api是PluginAPI实例,options是项目配置
module.exports = (api, options) =>{
   
    //...
}
// 指令对应的webpack模式
module.exports.defaultModes = {
   
  inspect: 'development'
}

array.reduce(function(total, currentValue, currentIndex, arr), initialValue)

this.modes = this.plugins.reduce((modes, {
    apply: {
    defaultModes }}) => {
   
    return Object.assign(modes, defaultModes)
}, {
   })

build
help.js
inspect.js
serve.js

config 各种开发模式下需要配置的的插件

// 指令目录这个目录下返回的都是一个函数function(api,options) api是PluginAPI实例,options是项目配置
module.exports = (api, options) =><
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值