【webpack4 系列之一】

第一: 先说开发环境,使用vscode, github:

https://github.com/hyyfrank/webpack4.git

概念啥的很多地方都讲过了,这里水一下,请看文档:

https://www.webpackjs.com/concepts/

OK, 接着开始讲怎么用,一般项目需要的功能,我们一个个做,先做个例子,看看打包大概流程是怎么样的,不bb.

  1. 先用npm初始化项目,当然用yarn也行,执行npm -init -y 就生成package.json文件了(最好换cnpm稍微快点)

  2. 先去vscode的plugin下一个html boilerplate然后写html就舒服了,先写个html,这时候只要简单建个文件输入html:5回车,就得到一个简单的html5文件了

  3. 简单加个css文件和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">

      <link rel="stylesheet" href="./main.css">

      <title>Hello Webpack</title>

  </head>

  <body>

      <h2>Say hello to webpack4!</h2>

      <script src="./bundle.js"></script>

  </body>

  </html>

  1. 为了简单看到html网页的效果,我们装个库:cnpm install http-server -g

  2. 我要用webpack自然得装下,cnpm install webpack -g

  3. 启动网页,用我们刚才得http-server: http-server -p 3000

访问http://127.0.0.1:3000/就能看到简单页面

———卧室分割线-------------

简单网页打完收工。接着就是来使用webpack来打包和混淆了js了。

  1. 先简单试一下:./node_modules/webpack/bin/webpack.js ./main.js bundle.js

然后你去把html 里的js的src改成bundle.js,打开网页看下,也是好的,说明webpack已经把main.js打包成bundle.js了,你可以去看下里边代码长什么样,有个了解

  1. 当然,我不能每次都自己动手去改这个html和输入命令吧,所以我们webpack提供了配置文件的方式来让你写,结合package.json里的scripts部分,可以让我们加命令,这样就不会敲命令敲到手软了

——卧室分割线-------

  1. 开始正式打包
  • web pack.config.js长这样:

    
    const path = require("path");
    
    
    
    module.exports = {
    
      entry: {
    
        app: "./src/main.js"
    
      },
    
      output: {
    
        publicPath: __dirname + "/build/", // js引用路径或者CDN地址
    
        path: path.resolve(__dirname, "build"), // 打包文件的输出目录
    
        filename: "bundle.js"
    
      }
    
    };
    
    

和我们刚才命令行差不多,不过这次用配置文件的方式展示出来,啥意思呢,就是上面注释那意思。什么,你不知道entry和output的意思,拜托,稍微看下文档,中文的也行啊,起码有个大概了解【参考文章开始的链接】,写完这个,直接在当前目录下打webpack命令搞定!

然后我们把命令放在package.json里的scripts部分,以后直接npm run build就跑这个构建命令,就方便了,如下:(这里webpack是全局装的,方便点)


"build": "webpack"

OK,那我每次执行完构建,会生成一个build目录,我不想每次自己手动去删掉,所以,我们可以构建之前先删除这个文件,然后再开始构建,简单装个酷,cnpm install rmdir-cli,然后我们的package.json里的build脚本变成:


"build": "rmdir-cli build && webpack --watch"

稍微调整下文件结构,加个src目录来放js, 只需要修改下webpack.config.js里的entry的路径就可以了,当然了你html如果要应用到文件,js的src要改成从build中去取就行了,详细代码看我的github repo,watch就是为了你能监听文件的变化,修改文件webpack重新编译你也能看到

因为支持webpack支持ES6、CommonJs和AMD规范,所以都可以在js里去写,举个栗子,加上es6:

main.js


import addtwo from "./add"

console.log("javascript say hello.")

addtwo(1,2)

add.js


export default (a, b) => {

    console.log("a+b =",a+b)

    return a + b;

}

重新构建下,跑一下,看看打开html里的chrome dev tool,看看a+b=3有没有打出来。搞定!

看一眼打完包是什么样子


!function(e) {

    var t = {};

    function r(n) {

        if (t[n])

            return t[n].exports;

        var o = t[n] = {

            i: n,

            l: !1,

            exports: {}

        };

        return e[n].call(o.exports, o, o.exports, r),

        o.l = !0,

        o.exports

    }

    r.m = e,

    r.c = t,

    r.d = function(e, t, n) {

        r.o(e, t) || Object.defineProperty(e, t, {

            enumerable: !0,

            get: n

        })

    }

    ,

    r.r = function(e) {

        "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(e, Symbol.toStringTag, {

            value: "Module"

        }),

        Object.defineProperty(e, "__esModule", {

            value: !0

        })

    }

    ,

    r.t = function(e, t) {

        if (1 & t && (e = r(e)),

        8 & t)

            return e;

        if (4 & t && "object" == typeof e && e && e.__esModule)

            return e;

        var n = Object.create(null);

        if (r.r(n),

        Object.defineProperty(n, "default", {

            enumerable: !0,

            value: e

        }),

        2 & t && "string" != typeof e)

            for (var o in e)

                r.d(n, o, function(t) {

                    return e[t]

                }

                .bind(null, o));

        return n

    }

    ,

    r.n = function(e) {

        var t = e && e.__esModule ? function() {

            return e.default

        }

        : function() {

            return e

        }

        ;

        return r.d(t, "a", t),

        t

    }

    ,

    r.o = function(e, t) {

        return Object.prototype.hasOwnProperty.call(e, t)

    }

    ,

    r.p = "/Users/hyy/github/webpack4/build/",

    r(r.s = 0)

}([function(e, t, r) {

    "use strict";

    r.r(t);

    console.log("javascript say hello."),

    ((e,t)=>(console.log("a+b =", e + t),

    e + t))(1, 2)

}

]);

今天困了,先写到这吧,不知道说啥了,扯个淡收场吧!

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

推荐阅读更多精彩内容