以编程方式启动vue-cli-service服务时控制webpack的详细程度

时间:2019-09-20 15:24:26

标签: javascript node.js vue.js webpack vue-cli-3

我正在尝试从Node.js应用程序内部运行vue-cli-service serve

const Service = require('@vue/cli-service');
const service = new Service(process.cwd());
service.init("development");
service.run('serve').then(({ server, url }) => {
  console.log("started server on " + url);
});

它有效。

$ node e2e.js
INFO  Starting development server...
40% building 130/136 modules 6 active ...node_modules/eslint-loader/index.js??ref--13-0!.../ui/src/js/config/Product.js...
. . .
. . .
started server on http://localhost:8080/

但是当我以production模式执行(将service.init("development")更改为service.init("production"))时,我看不到webpack的“构建”进度了。

$ node e2e.js
INFO  Starting development server...
started server on http://localhost:8080/

我的问题是:如何在生产模式下启动Vue服务器,但如何将Webpack进度打印到控制台?

1 个答案:

答案 0 :(得分:1)

进度由Webpack的ProgressPlugin报告,该版本是Vue CLI inserts only for non-production and non-test builds(自3.x起)。

您可以通过devServer.progress=true(当前为<root>/vue.config.js)在undocumented中启用此插件:

module.exports = {
  devServer: {
    progress: true  // always show progress (even in production mode)
  }
}

或者在您的e2e.js中,您可以将ProgressPlugin插入Service实例的webpackChainFns[]之后的{em> init()

service.init("production")
service.webpackChainFns.push(config => {
  config
    .plugin("progress")
    .use(require("webpack/lib/ProgressPlugin"))
})