前端开发那些事儿

webpack4基本使用(一)

2020-11-26  本文已影响0人  Raral

webpack0配置

npx webpack
自动会把 src/index.js 打包到 dist/main.js
webpack ./he.js -o ./dist
版本升级后差异:https://blog.csdn.net/qq_43612538/article/details/109389674

webpack 基本使用

{
  "name": "webpack-demo",
  "version": "1.0.0",
  "main": "index.js",
  "license": "MIT",
  "scripts": { // 通过npm run 命令 会自动取找node_modules 下的bin/webpack.cmd -> webpack
    "build":"webapck"  
  },
  "devDependencies": {
    "webpack": "4.14.0",
    "webpack-cli": "^4.2.0"
  }
}

webpack html插件(HtmlWebpackPlugin)

注意
webpack-cli 与 webpack-dev-server 版本间不兼容,否则会报错(https://www.cnblogs.com/rapale/p/13863511.html)
"webpack": "^4.43.0",
"webpack-cli": "^3.3.12",
"webpack-dev-server": "^3.11.0"


//#endregion
let path = require("path");
let HtmlWebpackPlugin = require("html-webpack-plugin");

// /**@type {import('webpack').Configuration}*/
const config = {
    mode:"production",//模式 默认两种 product development
    entry:"./src/index.js",// 入口
    output:{
        path: path.resolve(__dirname, "build"),//路径必须是绝对路径
        filename:"bundle.[hash].js",//可以设一个一个hash值 防止缓存
    },
    //开发服务配置
    devServer:{
        port:3000,//端口号
        progress:true,//显示进度条
        contentBase:"./build",//服务器的静态跟目录
        compress:true,//运行是否压缩
    },
    //webpack 插件
    plugins: [
        new HtmlWebpackPlugin({//自动引入js文件
            template:"./src/index.html",//模板文件
            filename:"index.html",//打包后的
            minify:{//压缩打包后的index.html
                removeAttributeQuotes:true,//去掉打包后的index.html中的引号
                collapseWhitespace:true,//打包后的index.html折叠这一行
                
            },
            hash:true,//打包出现一个hash
        })
    ]
}


module.exports = config;

webpack css处理 loader

本质上,webpack loader 将所有类型的文件,转换为应用程序的依赖图(和最终的 bundle)可以直接引用的模块。

{
"css-loader": "^3.6.0",
"style-loader": "^2.0.0",
"sass-loader":"
}

let path = require("path");
let HtmlWebpackPlugin = require("html-webpack-plugin");

// /**@type {import('webpack').Configuration}*/
const config = {
    mode:"production",//模式 默认两种 product development
    entry:"./src/index.js",// 入口
    output:{//打包后的文件配置
        path: path.resolve(__dirname, "build"),//路径必须是绝对路径
        filename:"bundle.js",//可以设一个一个hash值 防止缓存
    },
    //开发服务配置
    devServer:{
        port:3000,//端口号
        progress:true,//显示进度条
        contentBase:"./build",//服务器的静态跟目录
        compress:true,//运行是否压缩
    },
    //webpack 插件
    plugins: [
        new HtmlWebpackPlugin({//自动引入js文件
            template:"./src/index.html",//模板文件
            filename:"index.html",//打包后的
            // chunks: ["manifest", "vendor",],
            minify:{//压缩打包后的index.html
                removeAttributeQuotes:true,//去掉打包后的index.html中的引号
                collapseWhitespace:true,//打包后的index.html折叠这一行
                
            },
            hash:true,//打包出现一个hash
        })
    ],
    //webpack loader
    module: {//模块
        rules:[//规则 css-loader 接续@import 语法
            //style-loader 他是把css插入到head的标签中,默认位置底部
            //loader 特点 希望单一 作用将任何文件转换成模块
            // loader的用法 字符串只能 用一个loader
            //多个lader 需要 []
            // 如果又额外参数 [{},{}]
            //执行顺序 从右向左,从下到上
            {
                test: /\.css$/,
                use: [{
                    loader: "style-loader"
                },"css-loader"]
            }
        ]
    }
}


module.exports = config;
上一篇下一篇

猜你喜欢

热点阅读