代码之家  ›  专栏  ›  技术社区  ›  iRyanBell

Vue cli服务是否提供生成完成回调?

  •  0
  • iRyanBell  · 技术社区  · 8 年前

    我想启动一个vue cli dev服务器,然后在此构建完成后从node运行命令。

    vue-cli-service serve 从一个节点脚本,以便我可以收到一个回调一旦开发服务器启动和运行?

    1 回复  |  直到 8 年前
        1
  •  4
  •   tony19 thanksd    8 年前

    vue-cli-service.js 不返回服务承诺(这将允许您设置完成回调),但您可以复制脚本(25行)来执行此操作:

    我的vue cli-服务.js:

    #!/usr/bin/env node
    const semver = require('semver')
    const { error } = require('@vue/cli-shared-utils')
    const requiredVersion = require('@vue/cli-service/package.json').engines.node
    
    if (!semver.satisfies(process.version, requiredVersion)) {
      error(
        `You are using Node ${process.version}, but vue-cli-service ` +
        `requires Node ${requiredVersion}.\nPlease upgrade your Node version.`
      )
      process.exit(1)
    }
    
    const Service = require('@vue/cli-service')
    const service = new Service(process.env.VUE_CLI_CONTEXT || process.cwd())
    
    const rawArgv = process.argv.slice(2)
    const args = require('minimist')(rawArgv)
    const command = args._[0]
    
    module.exports = () =>  // <--- add this line to return the service promise
      service.run(command, args, rawArgv).catch(err => {
        error(err)
        process.exit(1)
      })
    

    然后,您可以创建另一个使用此副本的脚本,添加 then 服务器成功启动时要调用的回调:

    我的-服务.js:

    #!/usr/bin/env node
    const service = require('./my-vue-cli-service')
    
    service().then(result => {
      if (result && result.server) {  // <--- server started successfully if result.server exists
        const {server, url} = result;
        console.log('ready');
      }
    })
    

    一定要更新 package.json 要使用新脚本:

    {
      "scripts": {
        "serve": "./my-service.js serve"
      }
    }
    
    推荐文章
    Brock  ·  Vue-Vue CLI-API变量
    9 年前