webpack 4.x一起学习(一)

最近在学习webpack第四个版本,相比大改版肯定有诸多不同,这边进行重新学习顺便排排BUG

安装过程中难免有点慢,但是npm是慢 cnpm又可能出错
npm install -g chajian --registry=http://registry.npm.taobao.org 推荐此方法安装
npm init -y 初始化
npm install -D webpack webpack-cli --registry=http://registry.npm.taobao.org 4版本要求安装webpack-cli 我们一步到位

安装好之后可以通过 webpack -v 查看版本号

创建webpack.config.js配置文件

大家可以根据我的目录进行测试webpack,也可以自行配置

index.js 注意js引入 此处是未生成的 待会我将要生成的js

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>webpack</title>
    </head>
    <body>
        <div id="title"></div>
        <script src="./bundle.js"></script>
    </body>
    </html>

entry.js写的简单一点 就一句代码

document.getElementById('title').innerHTML='Hello Webpack';

配置webpack.config.js 这个大家可能有点陌生 ,介绍一下基本配置

    module.exports={
        //入口文件的配置项
        entry:{},
        //出口文件的配置项
        output:{},
        //模块:例如解读CSS,图片如何转换,压缩
        module:{},
        //插件,用于生产模版和各项功能
        plugins:[],
        //配置webpack开发服务功能
        devServer:{}
    }

这里我用了3版本的配置 后续会跟进

来配置一下初步打包转换

entry选项(入口配置)

这个选项就是配置我们要压缩的文件一般是JavaScript文件(当然也可以是CSS…..)。这里要填写的是src目录下的entry.js文件。

output选项(出口配置)

出口配置是用来告诉webpack最后打包文件的地址和文件名称的,根据我们的配置应该打包到dist目录下

    module.exports={
        //入口文件的配置项
        entry:{
            //里面的entery是可以随便写的
            entry:'./src/entry.js'
        },
        //出口文件的配置项
        output:{
            //打包的路径文职
            path:path.resolve(__dirname,'dist'),
            //打包的文件名称
            filename:'bundle.js'
        },
        //模块:例如解读CSS,图片如何转换,压缩
        module:{},
        //插件,用于生产模版和各项功能
        plugins:[],
        //配置webpack开发服务功能
        devServer:{}
    }

webpack 打包的命令很简单 就是webpack 接下来我们来打包一下


很显然我们失败了 这里有个错误就是 path is not defined 我们这边需要引入一下path

   const path = require('path') =>在头部 引入path
   module.exports={
        //入口文件的配置项
        entry:{
            //里面的entery是可以随便写的
            entry:'./src/entry.js'
        },
        //出口文件的配置项
        output:{
            //打包的路径文职
            path:path.resolve(__dirname,'dist'),
            //打包的文件名称
            filename:'bundle.js'
                    },
        //模块:例如解读CSS,图片如何转换,压缩
        module:{},
        //插件,用于生产模版和各项功能
        plugins:[],
        //配置webpack开发服务功能
        devServer:{}
    }

好 我们再webpack一下 此时我们将会成功

dist目录下自动生成了bundle.js 文件 你可以打开看一下啊 根本看不懂 这是打包之后的文件,但是我们打开浏览器运行html的时候,里面会出现内容,就说明这个js是可以使用的

此时我们删掉生成的js 配置一下mode属性

   const path = require('path')
   module.exports={
        mode: 'development', =>默认配置是 ‘production(生产环境)’
        //入口文件的配置项
        entry:{
            //里面的entery是可以随便写的
            entry:'./src/entry.js'
        },
        //出口文件的配置项
        output:{
            //打包的路径文职
            path:path.resolve(__dirname,'dist'),
            //打包的文件名称
            filename:'bundle.js'
                    },
        //模块:例如解读CSS,图片如何转换,压缩
        module:{},
        //插件,用于生产模版和各项功能
        plugins:[],
        //配置webpack开发服务功能
        devServer:{}
    }

此时我们再webpack 一下 可以做个对比 有什么不同(此处不演示)

给大家介绍一下配置中的 _dirname

其实path.resolve(__dirname,’dist’)就是获取了项目的绝对路径 我给大家演示一下

在dist下新建dirname.js文件 代码如下

const path =require('path')
console.log(path.resolve(__dirname,'dist'))

然后我们在下面输入命令 cd dist 然后 node dirname.js

可以看到输出来的 是dist的路径

到这里就是webpack最基本的配置了,希望小伙伴多练练,不练也多看看

多入口、多出口配置

在src下新建一个js 内容随意 删除dist目录下的所有js

   const path = require('path')
   module.exports={
        mode: 'development',
        //入口文件的配置项
        entry:{
            //里面的entery是可以随便写的
            entry:'./src/entry.js',
             =>这里我们又引入了一个入口文件
            entry2:'./src/entry2.js'
        },
        //出口文件的配置项
        output:{
            //打包的路径文职
            path:path.resolve(__dirname,'dist'),
            //打包的文件名称
            filename:'[name].js'  =>注意此处 使用[name].js  表示打包出的文件名与进入名相同
                                          =>也就是即将打包出 entry.js 与entry2.js 在dist下
         },
        //模块:例如解读CSS,图片如何转换,压缩
        module:{},
        //插件,用于生产模版和各项功能
        plugins:[],
        //配置webpack开发服务功能
        devServer:{}
    }

改动一下index中的引入文件

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>webpack</title>
    </head>
    <body>
        <div id="title"></div>
        <script src="./entry.js"></script>  引入发生了改变
        <script src="./entry2.js"></script>

    </body>
    </html

接下来webpack打包一下

此时dist下已生成了js文件两个 说明我们成功了

如果你成功了 就已经入门咯

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

推荐阅读更多精彩内容