webpack 学习笔记

252 阅读1分钟

概念: 打包工具,优化转化压缩代码,热启动等作用

webpack官方文档

html-webpack-plugin介绍

基础安装

  • npm install webpack webpack-cli -g -D //全局 局部 都安装一遍
  • npm init 生成package.json 文件
  • 新建文件webpack.config.js ,webpack 默认加载的文件,在这进行配置

webpack的基础配置

    const path = require('path') ,
          htmlWebpackPlugin = require('html-webpack-plugin');  //绝对路径插件
          
    module.exports = {
        mode: 'production / development' ,  //打包模式  
        entry: '', //入口简写,根据依赖寻找所有包  string | object | array
        entry: {   //入口文件多个时,使用对象,且只能  《 多个入口 》 --  对应 =>  《 一个出口 》
            app: './src/app.js',
            vendors: './src/vendor.j'
        }
        output:{  //出口
            path: path.resolve(__dirname, 'dist') , //输入目录
            filename: "main.js"                     //用于输出文件的文件名
            filename: "[name].js"                   //name 为变量,文件名不变
            publicPath: "/assets"
        },
        module:{ //模块配置
            rule:[
                { 
                    test: '/\.txt$/',//用于标识出应该被对应的 loader 进行转换的某个或某些文件。
                    loader: '',      //使用哪个插件解析
                    use: {           //同上功能,不过可以加入配置
                        loader: '',
                        options: {
                            presets: ['env','react']
                        }
                    } ,
                    exclude: path.resolve(__dirname, 'node_modules'),  //忽略哪个文件
                },
            ]
        },
        
        //插件 
        //使用方法: require()引入, plugin数组中  new 实例化
        plugins: [                  //Array
            new htmlWebpackPlugin({
                 //需要 在index.html 使用 {%= o.htmlWebpackPlugin.options.title %}
                title: '文章标题', 
                 // 本地模板文件的位置
                template:"index.html",  
                 //输出文件的文件名称,默认为index.html,不配置就是该文件名;此外,还可以为输出文件指定目录位置
                filename: 'index.html', 
                 //不想写了,自己看上面文档去 html-webpack-plugin
                hash: false,
                inject: true,
                compile: true,
                favicon: false,
                minify: false,
                cache: true,
                showErrors: true,
                chunks: 'all',
                excludeChunks: [],
                xhtml: false
            }) ;
        ], 
        //热启动,需要再开发环境配置,上线不需要配置。
        devServer: {
          	watchOptions: {
          		ignored: /node_modules/
          	},
          	contentBase:path.resolve(__dirname, '../dist'),  //文件路径
          	host: 'localhost',
          	port: 3200
         }
        
    }

package.json 配置

    
    "scripts": {
        "test": "echo \"Error: no test specified\" && exit 1",
        "build": "webpack --config build/webpack.config.js ",        //打包,一定加上config
        "dev": "webpack-dev-server --process --config build/webpack.config.js" //热启动
    },
    
    使用
    npm run build/dev
    原理: npm run build 相当于 webpack --config build/webpack.config.js  只是简单化而已
    

应用包

    解析规则: 由下而上,由后置前

解析React
1, npm i babel-loader babel-preset-env babel-core babel-preset-react -D

解析css
1. npm i css-loader style-loader -D

解析sass
1. npm i style-loader css-loader sass-loader node-sass

解析图片
1. npm i url-loader file-loader -D

{
    test: /\.(css|sass)$/,
    loader: '',
    或者
    use:{
        loader: '',
        options:{

        }
    }
}

步骤介绍

吐槽

  • webpack丢包率太高
  • 当webpack.config.js 文件出错,打包时,会走官方默认的配置文件.