webpack初探

原文英文版来自webpack官网
demo代码
本文地址javascript


欢迎浏览


这是一篇经过一个小例子给你介绍webpack的文章
你能够经过这篇文章了解到:css

  • 如何安装webpackhtml

  • 如何使用webpackjava

  • 如何使用装载器(loaders)node

  • 如何使用开发服务器(development server)webpack


安装webpack


你须要先安装node.js
$ npm install webpack -ggit

上面这句命令成功后,webpack命令行就可使用了。github

(若是你运行这句命令出错,能够试试$ cnpm install webpack -gcnpm须要安装) web

install success


设置,编译


建立一个空文件夹。
在文件夹里先建立两个文件entry.js,index.html
create successnpm

  • entry.js

document.write('webpack正常运行');
  • 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
这句命令行将会编译你的js文件entry.js,而且会建立一个新的js文件bundle.js。
若是编译成功,将会出现以下提示:
run success
用浏览器打开index.html,你能看到webpack正常运行
open


两个js文件


下一步,咱们在新的js文件里添加一些代码。

  • content.js

module.exports = "content.js.正常工做";
  • 修改entry.js

// document.write("webpack正常运行");
 document.write(require("./content.js"));

再用下面的命令行编译一下
$ webpack ./entry.js bundle.js
run success
刷新你的浏览器,你能够看到文字content.js.正常工做
open

webpack将会分析你的入口文件(entry.js)与其余js文件的依赖关系。这些js文件(也能够成为模块)也会被打包进bundle.js文件。webpack将会给每个模块一个惟一的ID,保存到bundle.js文件,经过惟一ID能够访问到。只要入口模块会在执行时被调用。(入口模块再提到用其它他所依赖的模块)。执行时,只提供必需的方法模块,必要时才执行依赖,调用依赖模块。 (恕我语言表达能力有点烂,有疑惑的朋友请移步看我另外一篇文章webpack把你的项目编译成了什么


第一个加载器(loader)


咱们想在应用里加一个css文件。
webpack只能处理Javascript,因此咱们须要css加载器(css-loader)去加载css文件。咱们还须要样式加载器(style-loader)把css文件应用到style标签内。
运行npm install css-loader style-loader命令安装这些加载器(loader)。(不须要安装到全局,因此不要-g参数)。这个命令将会帮你建立一个node_modules文件夹,加载器都在这个文件夹里。

一样也可使用cnpm install css-loader style-loadercnpm须要安装)

run success

继续:

  • 建立一个style.css文件

body {
    background: yellow;
}

*修改 entry.js文件

//document.write("webpack正常运行");
  require("!style!css!./style.css");
  document.write(require("./content.js"));

css
从新编译,而后刷新浏览器,能够看到页面的背景色为黄色。
yellow

经过前置加载器去请求模块,管道机制处理模块。这些加载器在特定的方式中改变文件内容。这文件被处理后,最后变成一个JavaScript模块。


绑定加载器


咱们不想去写很长的加载代码require("!style!css!./style.css");
咱们能够把文件的后缀名绑定到加载器上,而后咱们只须要写:require("./style.css")

  • 修改entry.js文件

//document.write("webpack正常运行");
 //require("!style!css!./style.css");
require("./style.css");
 document.write(require("./content.js"));

运行下面的命令进行编译:
webpack ./entry.js bundle.js --module-bind "css=style!css"
浏览器你能看到一样的结果
yellow


配置文件


咱们能够把命令行里的参数移到配置文件里:

  • 添加webpack.config.js文件

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

如今咱们只须要运行:

webpack

去编译


漂亮的输出


随着该项目的增加,编译可能须要更长的时间。因此咱们要展现一些进度条。咱们还想要的颜色…咱们经过下面命令行能够作到:

webpack --progress --colors

观察模式


咱们不想每一次项目变化都要手动编译……

webpack --progress --colors --watch

webpack能够缓存两次编译之间没有变化的模块和输出文件。

当咱们使用观察模式进行编译的时候。若是检测到任何更改,webpack将再次运行编译。若是检测到某个文件没有改变就启用高速缓存,直接使那个模块webpack缓存。


开发服务器


使用开发服务器开发体验会更好

npm install webpack-dev-server -g
webpack-dev-server --progress --colors

这将在本地启动一个8080端口的服务,指向静态文件index.html以及bundle.js(bundle自动编译)。每当bundle.js从新自动编译,会自动刷新浏览器(经过websocket机制)。打开浏览器 http://localhost:8080/webpack-dev-server/bundle
dev


谢谢

相关文章
相关标签/搜索