webpack入门

  1. 安装webpack
    首先需要安装node.js环境,见node官网.
    安装nodejs后使用npm 安装 webpack命令

     $ npm install webpack -g 
    

这样webpack 命令即能在全局环境下使用

  1. webpack小示例第一步

    创建空目录Demo文件夹 文件夹中创建app空文件夹
    在app文件夹中创建entry.js文件
    文件内容如下 --entry.js

     document.write("It works.");
    

    在app文件夹中创建 index.html
    文件内容如下 --index.html

     <!DOCTYPE html>
     <html lang="en">
     <head>
       <meta charset="UTF-8">
       <title>webpack入门</title>
     </head>
     <body>
       <script type="text/javascript" src="bundle.js" charset="utf-8"></script>
     </body>
     </html>
    

    执行命令:

     $ cd Demo/app
     $ webpack ./entry.js bundle.js 
    

该命令会对entry.js文件编译并创建一个bundle.js文件
如果成功的话,它会显示如下:

    Hash: ca188ee5789bb780fcec
    Version: webpack 1.13.0
    Time: 65ms
        Asset     Size  Chunks             Chunk Names
    bundle.js  1.42 kB       0  [emitted]  main
        [0] ./entry.js 28 bytes {0} [built]

在浏览器中打开index.html 显示 It works.

  1. 第二步依赖文件加载

    在app文件夹下添加content.js内容为

     module.exports = "It works from content.js.";
    

    更改entry.js文件内容为:

     document.write(require("./content.js"));
    

    执行命令:

     $ webpack ./entry.js bundle.js 
    

    刷新浏览器index.html页面, 显示It works from content.js.
    webpack会分析你的输入文件的依赖的其他文件。这些文件(称为模块)都会最终包含在你的bundle.js中。webpack会给每个模块的一个独特的ID以及保存所有模块的ID以便在bundle.js文件访问。仅在启动时执行输入模块,在运行时提供需要的功能,并在需要时执行依赖。

  2. 第一次使用loaders

    我们要添加一个CSS文件到我们的示例中
    webpack只能处理JavaScript本身,所以我们需要css-loader去装载CSS文件,同样也需要style-loader。
    执行命令

     $ npm install css-loader style-loader
    

    在app文件夹下添加style.css文件
    文件内容如下--style.css

     body {
         background: yellow;
     }
    

更新entry.js文件

    require("!style!css!./style.css");
    document.write(require("./content.js"));

执行命令:

    $ webpack ./entry.js bundle.js 

刷新浏览器index.html页面, 显示带有黄色背景的It works from content.js.
webpack只能处理JavaScript本身,style.css通过!style!css!装载机管道以特定的方式中改变输出 bundle.js 文件的内容。这些转换后的结果是一个JavaScript模块。
如果我们不想使用 require("!style!css!./style.css");
而想直接使用require("./style.css");
更新entry.js文件内容为:

    require("./style.css");
    document.write(require("./content.js"));

执行命令时要绑定加载模块:

    $ webpack ./entry.js bundle.js --module-bind 'css=style!css'

刷新浏览器index.html页面, 显示同样的效果。
某些环境下这里可能要用双引号 "css=style!css"

  1. 使用配置文件 webpack.config.js

    在Demo文件夹下创建webpack.config.js
    文件内容如下:

     module.exports = {
         entry: "./app/entry.js",
         output: {
             path: __dirname,
             filename: "./app/bundle.js"
         },
         module: {
             loaders: [
                 { test: /\.css$/, loader: "style!css" }
             ]
         }
     };
    

    现在只需要在Demo目录下执行命令:

     $ webpack
     执行成功会显示:
     Hash: ab14e3789227f2cbf6c0
     Version: webpack 1.13.0
     Time: 955ms
           Asset     Size  Chunks            Chunk Names
     ./app/bundle.js  11.8 kB       0  [emitted]  main
          [0] ./app/entry.js 67 bytes {0} [built]
          [5] ./app/content.js 45 bytes {0} [built]
             + 4 hidden modules
    

    webpack会自动加载当前目录下的webpack.config.js文件

  2. 漂亮的输出
    随着项目的增长,编译可能需要更长的时间。所以我们要展示一些进度条、颜色…可以使用命令

     $webpack --progress --colors
    
  3. 使用watch model
    使用watch model模式时,可理解为监听模式,如果检测到任何文件更改,它将再次运行编译。

     $webpack --watch 
    
  4. 使用webpack开发服务器

     // npm 全局安装webpack开发服务器
     $ npm install webpack-dev-server -g
     在Demo文件夹下执行
     $ webpack-dev-server --progress --colors
    

    webpack-dev-server 会在本地提供一个静态文件服务器
    http://localhost:8080/webpack-dev-server/
    同时内部也在使用webpack的watc模式自动编译更新
    浏览器中打开http://localhost:8080/webpack-dev-server/
    只要文件有更新 浏览器也会自动刷新页面。

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

推荐阅读更多精彩内容

  • GitChat技术杂谈 前言 本文较长,为了节省你的阅读时间,在文前列写作思路如下: 什么是 webpack,它要...
    萧玄辞阅读 12,681评论 7 110
  • 写在前面 第一次接触webpack,是在一个react项目参与中,刚开始使用的时候,甚至不知道是做什么用的,只看到...
    默默先生Alec阅读 653评论 0 3
  • (一)欢迎了解webpack; (本文的内容大部分来自webpack的官方文档,写的目的是自己入门时候遇到的困惑,...
    sky_rainbow阅读 1,437评论 0 1
  • 一.什么是 Webpack Webpack 是一个模块打包器。它将根据模块的依赖关系进行静态分析,然后将这些模块按...
    逍遥g阅读 773评论 0 0
  • DEMO地址:http://pan.baidu.com/s/1eR4s2uI 1.前言 现今的很多网页其实可以看做...
    童井神阅读 335评论 0 1