• webpack入门文档教程


    webpack 入门教程

    欢迎

    这个简单的教程会通个一个简单的例子来作为指南。

    从中,你可以学到:

    • 怎么安装 webpack
    • 怎么使用 webpack
    • 怎么使用加载器
    • 怎么使用开发服务器

    安装 webpack

    首先确保安装了 node.js

    $ npm install webpack -g

    上面命令确保可以在命令行中使用 webpack 命令


    设定编译

    从一个空白文件开始,创建以下文件:

    增加 entry.js

    document.write("It works.");

    增加 index.html

    <html>
        <head>
            <meta charset="utf-8">
        </head>
        <body>
            <script type="text/javascript" src="bundle.js" charset="utf-8"></script>
        </body>
    </html>

    然后执行以下命令:

    $ webpack ./entry.js bundle.js

    这将编译 entry.js 并输出为 bundle.js。

    如果一切正常,将输入类似下面的信息:

    Hash: e97678c23acf8ee01956
    Version: webpack 1.9.10
    Time: 135ms
        Asset     Size  Chunks             Chunk Names
    bundle.js  1.44 kB       0  [emitted]  main
       [0] ./entry.js 29 bytes {0} [built]
    

    在浏览器中打开 index.html,将展示 It works.

    It works.

    第二个文件

    下一步,我们将把部分代码移到另一个文件中。

    增加 content.js

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

    更新 entry.js

    - document.write("It works.");
    + document.write(require("./content.js"));

    然后编译

    $ webpack ./entry.js bundle.js

    刷新浏览器,可以看到内容变为 It works from content.js.

    It works from content.js.

    webpack 会分析入口文件(entry.js)来找寻依赖文件。这些文件(又称之为模块)会包括到 bundle.js 中。webpack 会给每个模块一个唯一的 id,然后在 bundle.js 中通过该 id 来访问对应的模块。启动时,只会执行入口模块。一个短小的运行时提供了 require 函数,在引用模块时会执行依赖模块。


    首个加载器

    我们希望在应用中增加一个 css 文件。

    因为 webpack 本身只能支持 js,所以需要 css-loader 来处理 css 文件,同时还需要一个 style-loader 来在页面中使用 css 文件里定义的样式。

    创建一个空白的 node_modules 目录。

    执行 npm install css-loader style-loader 来安装加载器。(因为需要安装在当前应用,所以不需要 -g 参数)

    然后具体使用

    增加 style.css

    body {
        background: yellow;
    }

    更新 entry.js

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

    通过在模块请求前添加加载器,模块将会被加载器管道处理。这些加载器特定的方式来处理文件内容,最终转换后的内容将是一个 javascript 模块。

    注:串联起来的加载器将自右向左执行。


    绑定加载器

    我们并不希望写类似这样的代码 require("!style!css!./style.css");。我们可以给指定的文件后缀绑定加载器,这样只需要写 require("./style.css")

    更新 entry.js

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

    然后运行下面的命令来编译

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

    刷新页面,将看到同样的效果。

    It works from content.js.

    配置文件

    把配置选项移到配置文件中

    增加 webpack.config.js

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

    然后只需执行 webpack 来编译

    Hash: 88d0f4710a9d3a391d69
    Version: webpack 1.9.10
    Time: 263ms
        Asset     Size  Chunks             Chunk Names
    bundle.js  10.7 kB       0  [emitted]  main
       [0] ./entry.js 76 bytes {0} [built]
       [5] ./content.js 44 bytes {0} [built]
        + 4 hidden modules

    webpack 命令会尝试加载当前目录下的 webpack.config.js 文件。


    更友好的输出

    如果项目变得越来越大,编译耗时将会越来越长。所以,我们希望能够展示一些进度条,同时增加颜色……

    这些需求可以通过以下命令来实现

    $ webpack --progress --colors

    监控模式

    我们并不希望每一个变更都需要去手动编译,则可以通过以下命令来改善。

    $ webpack --progress --colors --watch

    这样,webpack 会缓存未变更的模块而输出变更的模块。

    开启 webpack 监控模式后,webpack 会给所有文件添加用于编译的文件监控。如果有任何变更,将会触发编译。当缓存开启时,webpack 会在内存中保存所有模块内容并在没变更时直接重用。


    开发服务器

    开发服务器是一个更好的选择

    $ npm install webpack-dev-server -g

    然后

    $ webpack-dev-server --progress --colors

    这会在 localhost:8080 提供一个小的 express 服务器来提供静态资源以及自动编译的套件。当有套件重新编译后,会通过 socket.io 来自动更新浏览器页面。在浏览器中打开 http://localhost:8080/webpack-dev-server/bundle 。

    webpack-dev-server 使用了 webpack 监控模式,同时也阻止了 webpack 生成结果文件到硬盘,而是直接通过内存来提供服务。

  • 相关阅读:
    Eclipse中常用的快捷键总结!不收藏后悔!
    MySQL基本命令整理,java数据库秘籍!
    centos 禁用ip v6
    win7 & win10 安装AD管理工具
    CentOS LVM 卷在线扩容
    Windows 与 Linux 、esxi下面查看内存容量和数量
    ESX/ESXi 主机上的每个插槽中安装了多少内存
    使用 esxcli storage vmfs unmap 命令在精简置备的 LUN 上回收 VMFS 删除的块
    vSphere 高级特性FT配置与管理
    vSphere HA 原理与配置
  • 原文地址:https://www.cnblogs.com/ericHTML5/p/5333313.html
Copyright © 2020-2023  润新知