webpack4基本使用(一)

webpack0配置

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

webpack 基本使用

  • 默认 根目录的配置文件 webpack.config.js
  • 可以修改的指定配置文件
    webpack -- config webpack.my.js
{
  "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)

  • HtmlWebpackPlugin简化了HTML文件的创建,以便为你的webpack包提供服务。这对于在文件名中包含每次会随着编译而发生变化哈希的 webpack bundle 尤其有用。 你可以让插件为你生成一个HTML文件,使用lodash模板提供你自己的模板,或使用你自己的loader。
  • 我们可以自己配置一个 服务器去运行自己的文件

    yarn add webpack-dev-server -D
  • 可以通过 脚本 npx webpack-dev-server ,不会打包文件,只是把打包写入内存中,会以当前目录作为静态目录

注意
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"

  • 但是我们运行开发服务器时,希望把src/index.html,打包后自动放入到对应的 静态文件夹中访问,这个时候使用 html-webpack-pulgin

//#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

  • loader 让 webpack 能够去处理那些非 JavaScript 文件(webpack 自身只理解 JavaScript)。loader 可以将所有类型的文件转换为 webpack 能够处理的有效模块,然后你就可以利用 webpack 的打包能力,对它们进行处理。

本质上,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;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342

推荐阅读更多精彩内容