【问题标题】:Vue-cli-service serve build completion callback?Vue-cli-service 服务构建完成回调?
【发布时间】:2019-02-07 09:33:54
【问题描述】:

我想启动一个 vue-cli 开发服务器,然后在构建完成后从节点运行命令。

有没有办法从节点脚本运行vue-cli-service serve,以便在开发服务器启动并运行后接收回调?

【问题讨论】:

    标签: vue.js vue-cli vue-cli-3


    【解决方案1】:

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

    my-vue-cli-service.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 回调,以便在服务器成功启动时调用:

    my-service.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 以使用新脚本:

    package.json:

    {
      "scripts": {
        "serve": "./my-service.js serve"
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2020-03-26
      • 2020-02-10
      • 1970-01-01
      • 2020-01-31
      • 2021-07-24
      • 2019-06-03
      • 2020-08-08
      • 2022-01-18
      • 2019-05-22
      相关资源
      最近更新 更多