• 生产环境 webpack 配置


      1  
      2 
      3 const {resolve} = require('path')
      4 const MiniCssExtractPlugin = require('mini-css-extract-plugin')
      5 const OptimizeCssAssetsWebpackPlugin = require('optimize-css-assets-webpack-plugin')
      6 const HtmlWebpackPlugin = require('html-webpack-plugin')
      7 
      8 process.env.NODE_ENV = 'production'
      9 
     10 //复用loader
     11 const commonCssLoader = [
     12     MiniCssExtractPlugin.loader,
     13     'css-loader',
     14     {
     15         loader:'postcss-loader',
     16         options:{
     17             ident:'postcss',
     18             plugins:()=>[require('postcss-preset-env')()]
     19         }
     20     }
     21 ]
     22 
     23 module.exports={
     24     entry:'./src/index.js',
     25     output:{
     26         filename:'bundle.js',
     27         path:resolve(__dirname,'build')
     28     },
     29     module:{
     30         rules:[
     31             {
     32                 test:/.css$/,
     33                 use:[...commonCssLoader]
     34             },
     35             {
     36                 test:/.less$/,
     37                 use:[...commonCssLoader]
     38             },
     39             {
     40                 test:/.js$/,
     41                 exclude:/node_modules/,
     42                 enforce:'pre', //优先执行,正常的,一个文件只能被一个loader处理,当一个文件要被多个loader处理,一定要指定loader执行的先后顺序,先执行eslint再执行babel
     43                 loader:'eslint-loader',
     44                 options:{
     45                     fix:true
     46                 }
     47             },
     48             {
     49                 test:/.js$/,
     50                 exclude:/node_modules/,
     51                 loader:'babel-loader',
     52                 options:{
     53                     presets:[
     54                         ['@babel/preset-env',{
     55                             useBuiltIns:'usage',
     56                             corejs:{version:3},
     57                             targets:{
     58                                 chrome:'60',
     59                                 firefox:'50'
     60                             }
     61                         }]
     62                     ]
     63                 }
     64             },
     65             {
     66                 test:/.(jpg|png|gif)$/,
     67                 loader:'url-loader',
     68                 options:{
     69                     limit:8*1024,
     70                     name:'[hash:10].[ext]',
     71                     outputPath:'imgs',
     72                     esModule:false
     73                 }
     74             },
     75             {
     76                 test:/.html$/,
     77                 loader:'html-loader'
     78             },
     79             {
     80                 exclude:/.(js|css|less|html|jpg|png|gif)$/,
     81                 loader:'file-loader',
     82                 options:{
     83                     outputPath:'media'
     84                 }
     85             }
     86         ]
     87     },
     88     plugins:[
     89         new MiniCssExtractPlugin({
     90             filename:'bundle.css'
     91         }),
     92         new OptimizeCssAssetsWebpackPlugin(),
     93         new HtmlWebpackPlugin({
     94             template:'./src/index.html',
     95             minify:{
     96                 collapseWhitespace:true,
     97                 removeComments:true
     98             }
     99         })
    100     ],
    101     mode:'production'
    102 }
  • 相关阅读:
    网页表格或div层在网页中被撑开解决之道
    jquery把给定的json自动生成多级下拉框
    jquery理想菜单实现(显示全国省市区分级效果)
    正则表达式记录
    jQuery自定义插件
    js数组及其常用方法
    vue自定义组件
    GET和POST
    可变对象和不可变对象
    js 不同元素的同一属性运动
  • 原文地址:https://www.cnblogs.com/shanlu0000/p/13052206.html
Copyright © 2020-2023  润新知