webpack上线版(生产环境中推荐使用)

Posted 苦海123

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了webpack上线版(生产环境中推荐使用)相关的知识,希望对你有一定的参考价值。

配置上线版(生产环境)webpack:

实际中将开发环境中和生产环境中打包配置是分开的,两者本质没太大区别,只是生产环境中的webpack打包配置要更加优化合理,下面将具体介绍一下生产环境中webpack配置文件,其步骤:

1.在项目文件夹中新建一个名为: webpack.publish.config.js 的文件。

2.在package.json文件script中新增配置 : “pub”:“webpack --config webpack.publish.config.js”

3.将 webpack.config.js 文件中的代码复制粘贴到 webpack.publish.config.js 文件中进行修改。

4.下面是 webpack.publish.config.js 文件中修改过后的代码示例:

const path = require('path');//引入路径模块

const htmlWebpackPlugin = require('html-webpack-plugin');//用于打包时生成html文件的插件

const cleanWebpackPlugin = require('clean-webpack-plugin');//用于每次打包时删除dist中旧的文件的插件

const webpack = require('webpack');//引入webpack自己,用于配置webpack本身

const ExtractTextPlugin = require("extract-text-webpack-plugin");//引入抽取CSS的插件

const OptimizeCssAssetsPlugin = require('optimize-css-assets-webpack-plugin');//引入压缩CSS的插件

module.exports = {
  entry: { // 配置入口文件:
    app: path.join(__dirname, './src/main.js'),//将项目根目录中src下的main.js作为入口文件
    vendors: ['jquery'] // 配置第三方包无需打包到一起,把要抽离的第三方包名加到数组即可
  },

  output: {//配置出口文件:
    path: path.join(__dirname, './dist'),//将打包后的文件输出到:项目根目录中dist文件夹中
    filename: 'js/bundle.js'//将打包后的js文件命名为bundle.js并将其存放到dist下js文件夹中
  },

  plugins: [ // 配置插件:
    new htmlWebpackPlugin({//打包时在dist中生成html文件的插件
      template: path.join(__dirname, './src/index.html'),//配置打包时需要的html文件供打包生成html文件
      filename: 'index.html',//html文件名
      minify: {//压缩配置:
        collapseWhitespace: true, // 合并多余的空格
        removeComments: true, // 移除注释
        removeAttributeQuotes: true // 移除属性上的双引号
      }
    }),

    new cleanWebpackPlugin(['dist']),//每次打包时删除旧的dist文件

    new webpack.optimize.CommonsChunkPlugin({//抽离第三方包的插件
      name: 'vendors', // 指定要抽离的入口名称
      filename: 'js/vendors.js' //将第三方包单独打包到vendors.js文件中
    }),

    new webpack.optimize.UglifyJsPlugin({//压缩插件
      compress: { // 配置压缩选项
        warnings: false // 移除警告
      }
    }),

    new webpack.optimize.DedupePlugin({ //配置环境插件
      'process.env.NODE_ENV': '"production"'// 设置为上线环境,进一步压缩JS代码
    }),

    new ExtractTextPlugin("css/styles.css"), // 抽取CSS文件

    new OptimizeCssAssetsPlugin()// 压缩CSS代码的插件
  ],
  module: {
    rules: [
      {//处理css文件:
        test: /\\.css$/, use: ExtractTextPlugin.extract({
          fallback: "style-loader",
          use: "css-loader",
          publicPath: '../' //抽取的时候,自动为路径加上 ../ 前缀
        })
      },
      {//处理scss文件:
        test: /\\.scss$/, use: ExtractTextPlugin.extract({
          fallback: 'style-loader',
          use: ['css-loader', 'sass-loader'],
          publicPath: '../' //抽取的时候,自动为路径加上 ../ 前缀
        })
      },
      {//处理图片:
        test: /\\.(png|gif|bmp|jpg)$/,
        use: 'url-loader?limit=5000&name=images/[hash:8]-[name].[ext]'//当文件大于5000时,将文件输出到dist下images文件夹中,命名为:取hash值前8位+原文件名+后缀
      },
      {//处理js文件:
        test: /\\.js$/, use: 'babel-loader',
        exclude: /node_modules/ //排除node_modules文件夹中的文件
      },
      {//处理vue文件:
        text: /\\.vue$/,
        use: 'vue-loader'
      },
      {//处理txt文件:
        test: /\\.txt$/,
        use: 'raw-loader'
      }
      //注意:更多处理相关文件的配置自行配置,需要根据实际进行处理,避免无效loader
    ]
  }
}

5.终端输入:npm run pub 打生产环境的包。

开发环境webpack配置:
需要注意:开发环境还是建议使用开发环境的打包配置进行打包,因为这样开一提高开发效率,开发环境打包配置之前已经介绍过,这里再做简单强调一下,其主要步骤:
1.确保在package.json文件script中有配置:“dev”: “webpack-dev-server --open --port 3000 --hot”

2.确保项目文件夹根目录下有: package.config.js 文件,其代码示例:

const path = require('path')

const htmlWebpackPlugin = require('html-webpack-plugin')

module.exports = {
  entry: path.join(__dirname, './src/main.js'),
  output: {
    path: path.join(__dirname, './dist'),
    filename: 'bundle.js'
  },
  plugins: [
    new htmlWebpackPlugin({
      template: path.join(__dirname, './src/index.html'),
      filename: 'index.html'
    })
  ],
  module: {
    rules: [
      {
        test: /\\.css$/,
        use: ['style-loader', 'css-loader']
      },
      {
        test: /\\.scss$/,
        use: ['style-loader', 'css-loader', 'sass-loader']
      },
      {
        test: /\\.(png|gif|bmp|jpg)$/,
        use: 'url-loader?limit=5000'
      },
      {
        test: /\\.js$/,
        use: 'babel-loader',
        exclude: /node_modules/
      },
      {
        text: /\\.vue$/,
        use: 'vue-loader'
      },
      {
        test: /\\.txt$/,
        use: 'raw-loader'
      }
    ]
  }
}

3.终端键入:webpack 打开发环境的包。

**注意:**以上用到的模块或插件,在使用之前确保安装。

提示:本文图片等素材来源于网络,若有侵权,请发邮件至邮箱:810665436@qq.com联系笔者删除。
笔者:苦海

以上是关于webpack上线版(生产环境中推荐使用)的主要内容,如果未能解决你的问题,请参考以下文章

webpack 生产环境相关

构建一个简易版的生产环境推荐系统(附代码)

webpackdependencies与devDependencies,npmcnpmyarn

webpack项目优化,压缩代码,去除冗余样式

[万字逐步详解]使用 webpack 打包 vue 项目(优化生产环境)

VUE项目多环境配置.md