build 命令

源码目录: packages/@vue/cli-service-globa 。

作用: 在生产环境模式下零配置构建一个 .js 或 .vue 文件 。

vue build 命令的入口在 packages/@vue/cli/bin/vue.js 中:

program
  .command('build [entry]')
  .description('build a .js or .vue file in production mode with zero config')
  .option('-t, --target <target>', 'Build target (app | lib | wc | wc-async, default: app)')
  .option('-n, --name <name>', 'name for lib or web-component mode (default: entry filename)')
  .option('-d, --dest <dir>', 'output directory (default: dist)')
  .action((entry, cmd) => {
    loadCommand('build', '@vue/cli-service-global').build(entry, cleanArgs(cmd))
  })

vue serve 命令类似,当执行 vue build 命令时会执行 @vue/cli-service-globalbuild 方法,那就直接看 build 方法源码:

exports.build = (_entry, args) => {
  const { context, entry } = resolveEntry(_entry)
  const asLib = args.target && args.target !== 'app'
  if (asLib) {
    args.entry = entry
  }
  createService(context, entry, asLib).run('build', args)
}

基本上和 vue serve 命令一样,只是针对于构建目标为 lib ,wc 以及 wc-async 时为 build 命令添加了 entry 参数,防止找不到构建入口。因为当不指定 构建目标入口时,默认为 src/App.vue,那么如果 vue build 命令不指定 entry 参数,就很容易出现找不到构建入口的情形。