【问题标题】:How to use webpack Encore to set VueJS production mode如何使用 webpack Encore 设置 VueJS 生产模式
【发布时间】:2019-01-09 05:49:20
【问题描述】:

我正在尝试使用 Webpack Encore 为 VueJS 设置生产模式。所以我按照文档说的那样指定了一个新插件,但这似乎没有改变任何东西。

new webpack.DefinePlugin({
  'process.env.NODE_ENV': JSON.stringify('production'),
}),

我为 NODE_ENV 设置尝试了多种不同的语法,但似乎没有任何效果

我错过了什么吗?我的 webpack conf 是这样的

const
  CopyWebpackPlugin = require('copy-webpack-plugin'),
  Encore = require('@symfony/webpack-encore'),
  UglifyJsPlugin = require('uglifyjs-webpack-plugin'),
  webpack = require('webpack');

Encore
  .setOutputPath('public/build/')
  .setPublicPath('/build')
  .cleanupOutputBeforeBuild()
  .addEntry('app', './assets/js/app.js')
  .addEntry('admin', './assets/js/admin.js')
  .addEntry('common', './assets/js/common.js')
  .addPlugin(new CopyWebpackPlugin([
   ...
  ]))
  .enableSassLoader()
  .enableVueLoader()
  .autoProvideVariables({
    '$': 'jquery',
    'jQuery': 'jquery',
    'window.$': 'jquery',
    'window.jQuery': 'jquery',
  })
  .enableSourceMaps(!Encore.isProduction())
;
const config = Encore.getWebpackConfig();

config.plugins = config.plugins.filter(
  (plugin) => !(plugin instanceof webpack.optimize.UglifyJsPlugin)
);
if (Encore.isProduction()) {
  config.plugins.push(
    new webpack.DefinePlugin({
      'process.env.NODE_ENV': JSON.stringify('production'),
    }),
    new UglifyJsPlugin()
  );
}
config.resolve.alias = {
  handlebars: 'handlebars/dist/handlebars.min.js',
  vue: 'vue/dist/vue.js',
};

module.exports = config;

我也尝试过,但没有成功

.enableVueLoader(function(options) {
  options.preLoaders = {
    productionMode: true,
  };
});

我正在使用 Webpack Encore 0.20 和 Webpack 3 和 VueJS 2.5.16

【问题讨论】:

    标签: webpack vue.js vuejs2 production-environment


    【解决方案1】:

    有两种方法可以做到这一点,

    1. 在您的webpack.config.js 中,将 vue 的别名更改如下:

      config.resolve.alias = {
          vue: 'vue/dist/vue.min.js',
      };
      
    2. 明确关闭开发工具。

      import Vue from 'vue'
      import App from './App'
      
      Vue.config.devtools = false
      Vue.config.productionTip = false
      
      new Vue({
         el: '#app',
         template: '<App/>',
         components: { App }
      })
      

    最后,您确实需要在生产模式下构建您的应用:

    yarn run encore production
    

    Reference Tutorial

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-15
      • 1970-01-01
      • 2018-03-22
      • 1970-01-01
      • 2022-07-09
      相关资源
      最近更新 更多