webpack4

webpack4

#查看webpack版本
1.npm info webpack(显示了最新版本)/npm view webpack versions
2.webpack -v
如果没有出现,npm install --global webpack-cli,因为
注意:webpack 4x以上,webpack将命令相关的内容都放到了webpack-cli,所以还需要安装webpack-cli;
之后再webpack -v
//========================
#webpack4开始

安装 
npm install webpack-cli -g

基本使用
webpack输入文件.js 输出文件.js

打包命令
webpack index.js -o output_test.js // 生产环境
webpack --mode development index.js -o output_test_d.js // 开发环境


#蛋:

--save   <=> -S     
--save-dev  <=> -D 

2、npm i --save-dev  <packname>  

      工程构建(开发时、“打包”时)依赖 ;例:xxx-cli , less-loader , babel-loader...
3、npm i --save <packname> 

      项目(运行时、发布到生产环境时)依赖;例:antd , element,react...

安装:npm i -D html-webpack-plugin

为了缓存,你会发现打包好的js文件的名称每次都不一样。使用webpack插件将打包出来的js文件引入到html中
npm i -D html-webpack-plugin

// webpack.config.js
const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin')

配置如

module.exports = {
    mode:'development', // 开发模式
    entry: path.resolve(__dirname,'../src/main.js'),    // 入口文件
    output: {
      filename: '[name].[hash:8].js',      // 打包后的文件名称
      path: path.resolve(__dirname,'../dist')  // 打包后的目录
    },
    plugins:[
      new HtmlWebpackPlugin({
        template:path.resolve(__dirname,'../public/index.html')
      })
    ]
}
// 打包生成的js文件已经被自动引入html文件中

 安装:clean-webpack-plugin

const {CleanWebpackPlugin} = require('clean-webpack-plugin')
module.exports = {
    // ...省略其他配置
    plugins:[new CleanWebpackPlugin()]
}
// 执行npm run build 会发现dist文件夹里会残留上次打包的文件,在打包输出前清空文件夹clean-webpack-plugin

在入口js中引入css文件

解析css文件
安装:npm i -D style-loader css-loader
解析less文件
安装:npm i -D less less-loader

// webpack.config.js
module.exports = {
    // ...省略其他配置
    module:{
      rules:[
        {
          test:/\.css$/,
          use:['style-loader','css-loader'] // 从右向左解析原则
        },
        {
          test:/\.less$/,
          use:['style-loader','css-loader','less-loader'] // 从右向左解析原则
        }
      ]
    }
} 

为css添加浏览器前缀

安装:npm i -D postcss-loader autoprefixer

 

 

优化打包速度

 优化打包速度
mode可设置development production两个参数
如果没有设置,webpack4 会将 mode 的默认值设置为 production 
production模式下会进行tree shaking(去除无用代码)和uglifyjs(代码压缩混淆

 

end.

posted @ 2020-01-07 17:16  wxid_m2pywu7fxu1f  阅读(163)  评论(0编辑  收藏  举报