Vue-cli-service serve обратный вызов завершения сборки?

Я хотел бы запустить сервер vue-cli dev, а затем запустить команду из узла после завершения сборки.

Есть ли способ запустить vue-cli-service serve из сценария узла, чтобы я мог получить обратный вызов после того, как сервер разработки будет запущен и работает?


person iRyanBell    schedule 01.09.2018    source источник


Ответы (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"
  }
}
person tony19    schedule 02.09.2018