[关闭]
@brizer 2016-02-02T16:05:33.000000Z 字数 1666 阅读 1108

WebPack之入门教程


前言

前面介绍了WebPack的作用,现在来跟着教程走一道。


安装

首先是安装,笔者之前就安装过了,所以不再介绍,直接上官网教程


目标

通过本文,完成以下目标:
1. 学会使用WebPack
2. 学会使用loader
3. 学会使用development server


编译绑定第一个文件

安装完毕后,我们输入webpack,会出现以下结果:

说明安装成功了。

接下来我们编译文件
首先在空文件夹中创建entry.js:

  1. document.write("It works");

然后创建index.html:

  1. <!doctype html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Document</title>
  6. </head>
  7. <body>
  8. <script src="bundle.js"></script>
  9. </body>
  10. </html>

接下来我们执行命令行webpack ./entry.js bundle.js :

发现文件夹下生成了bundle.js文件。
文件内容很复杂,不用管,只用知道这个是WebPack编译我们的entry.js并绑定的文件。

我们再通过浏览器方法index.html,即可得到结果:

  1. It works

添加第二个文件

接下来我们添加第二个文件content.js:

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

然后我们修改entry.js:

  1. //document.write("It works");
  2. document.write(require("./content.js"));

我们再次执行命令webpack ./entry.js bundle.js,查看index.html,结果变为:

  1. It works from content.js

WebPack会分析我们输入文件与其他文件的从属和模块依赖关系。


第一个loader

前面我们说过,WebPack默认是以javascript为标准的,如果我们需要加载css文件,就需要css-loader

我们先通过npm install css-loader style-loader来安装。
安装成功后:

接下来定义style.css:

  1. body {
  2. background-color: yellow;
  3. }

然后将entry.js改为如下:

  1. //document.write("It works");
  2. require("!style!css!./style.css");
  3. document.write(require("./content.js"));

再次编译后:

访问index.html,效果如下:

说明我们的css文件加载成功。
我们通过对require中的参数添加前缀,指定对应的loader来帮助加载。


绑定loader

如果我们不想每次在代码中去添加前缀呢?
我们将entry.js修改如下:

  1. //document.write("It works");
  2. require("./style.css");
  3. document.write(require("./content.js"));

这样的写法多么简单。
我们要做的就是在编译的时候进行设置:

  1. webpack ./entry.js hundle.js --module-bind "css=style!css"

这里需要注意的是,在windows平台上一定要使用双引号,否则会报错。

然后访问index.html,会发现css文件正常加载。


配置文件

随着项目的增大,我们不可能每次编译时都去设置各种参数,所以我们可以用配置文件来代替。
新建文件webpack.config.js如下:

  1. module.exports = {
  2. entry:"./entry.js",
  3. output:{
  4. path:__dirname,
  5. filename:"bundle.js"
  6. },
  7. module:{
  8. loaders:[
  9. {test:/\.css$/,loader:"style!css"}
  10. ]
  11. }
  12. };

这样直接执行webpack命名即可:

得到完整结果。


参考

Getting started

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注