欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

webpack 打包压缩js和css的方法示例

程序员文章站 2022-09-26 11:38:29
打包压缩js与css 由于webpack本身集成了uglifyjs插件(webpack.optimize.uglifyjsplugin)来完成对js与css的压缩混淆,无...

打包压缩js与css

由于webpack本身集成了uglifyjs插件(webpack.optimize.uglifyjsplugin)来完成对js与css的压缩混淆,无需引用额外的插件,

其命令 webpack -p 即表示调用uglifyjs来压缩代码,还有不少webpack插件如 html-webpack-plugin 也会默认使用uglifyjs。

uglify-js的发行版本只支持es5,如果你要压缩es6+代码请使用开发分支。

uglifyjs可用的选项有:

parse       解释

compress    压缩

mangle      混淆

beautify    美化

minify      最小化//在插件htmlwebpackplugin中使用

cli         命令行工具

sourcemap   编译后代码对源码的映射,用于网页调试

ast         抽象语法树

name        名字,包括变量名、函数名、属性名

toplevel    顶层作用域

unreachable 不可达代码

option      选项

stdin       标准输入,指在命令行中直接输入

stdout      标准输出

stderr      标准错误输出

side effects函数副作用,即函数除了返回外还产生别的作用,比如改了全局变量

列一份配置:

//使用插件html-webpack-plugin打包合并html
//使用插件extract-text-webpack-plugin打包独立的css
//使用uglifyjsplugin压缩代码
var htmlwebpackplugin = require('html-webpack-plugin');
var extracttextplugin = require('extract-text-webpack-plugin');
var webpack = require("webpack");
module.exports = {
  entry: {
    bundle : './src/js/main.js'
  },
  output: {
    filename: "[name]-[hash].js",
    path: __dirname + '/dist'
  },
  module: {
    rules: [
      {
        test: /\.css$/,
        use: extracttextplugin.extract({
          fallback: "style-loader",
          use: "css-loader"
        })

      },
      {
        test: /\.(png|jpg|jpeg|gif)$/,
        use: 'url-loader?limit=8192'
      }
    ]
  },
  resolve:{
      extensions:['.js','.css','.json'] //用于配置程序可以自行补全哪些文件后缀
  },

  plugins:[
    new htmlwebpackplugin({
      title: 'hello webpack',
      template:'src/component/index.html',
      inject:'body',
      minify:{ //压缩html文件
         removecomments:true,  //移除html中的注释
         collapsewhitespace:true  //删除空白符与换行符
       }
    }),
    new extracttextplugin("[name].[hash].css"),
    new webpack.optimize.uglifyjsplugin({
      compress: {   //压缩代码
        dead_code: true,  //移除没被引用的代码
        warnings: false,   //当删除没有用处的代码时,显示警告
        loops: true //当do、while 、 for循环的判断条件可以确定是,对其进行优化
      },
      except: ['$super', '$', 'exports', 'require']  //混淆,并排除关键字
    })
  ]
};

这里需要注意的是压缩的时候需要排除一些关键字,不能混淆,比如$或者require,如果混淆的话就会影响到代码的正常运行。

列几个压缩时常有的属性:

  1. dead_code -- 移除没被引用的代码
  2. loops -- 当 do 、 while 、 for 循环的判断条件可以确定是,对其进行优化。
  3. warnings -- 当删除没有用处的代码时,显示警告

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。