首先,要有一个使用@vue-cli打包的Vue.js项目,参考:https://blog.youkuaiyun.com/Z_ammo/article/details/103915494
根据package.json的设置:
// 截取package.json
"scripts": {
"serve": "vue-cli-service serve",
"build": "vue-cli-service build",
"lint": "vue-cli-service lint"
}
打包使用的是vue-cli-service,于是我们找到node_modules/@vue/cli-service(以下操作均在该路径下)
打开主文件:/bin/vue-cli-service.js
// 部分截取
const Service = require('../lib/Service')
const service = new Service(process.env.VUE_CLI_CONTEXT || process.cwd())
const rawArgv = process.argv.slice(2)
// 获取指令参数
const args = require('minimist')(rawArgv, {
boolean: [
// build
'modern',
'report',
'report-json',
'inline-vue',
'watch',
// serve
'open',
'copy',
'https',
// inspect
'verbose'
]
})
// 获取指令
const command = args._[0]
service.run(command, args, rawArgv).catch(err => {
error(err)
process.exit(1)
})
首先解释一下:minimist是一个用于处理控制台调用node时的各种参数的模块,其具体使用细节可以参考:https://blog.youkuaiyun.com/Z_ammo/article/details/103930392
可以看到还调用了另一个模块Service的run方法
打开lib/Service.js
// Service.run()方法截取
async run (name, args = {}, rawArgv = []) {
const mode