webpack入门

WebPack的安装

  1. 安装命令
    $ npm install webpack -g
  2. 使用webpack
    $ npm init  # 会自动生成一个package.json文件
    $ npm install webpack --save-dev #将webpack增加到package.json文件中
  3. 如果想要安装开发工具
    $ npm install webpack-dev-server --save-dev

WebPack开始使用

这里有最基本的使用方法,给大家一个感性的认识

  1. 正确安装了WebPack,方法可以参考上面
  2. 书写entry.js文件
    document.write("看看如何让它工作!");
  3. 书写index.html文件
    <html>
    <head>
    <meta charset="utf-8">
    </head>
    <body>
    <script type="text/javascript" src="bundle.js" charset="utf-8"></script>
    </body>
    </html>
  4. 执行命令,生成bundle.js文件
    $ webpack ./entry.js bundle.js
  5. 在浏览器中打开index.html文件,可以正常显示出预期
  6. 增加一个content.js文件
    module.exports = "现在的内容是来自于content.js文件!";
  7. 修改entry.js文件
    document.write(require("./content.js"));
  8. 执行第四步的命令

进行加载器试验

  1. 增加style.css文件
    body {
    background: yellow;
    }
  2. 修改entry.js文件
    require("!style-loader!css-loader!./style.css"); document.write(require("./content.js"));

            (这里要注意,webpack2不支持简写!style!css!./style.css,亲试)

  1. 执行命令,安装加载器
    $ npm install css-loader style-loader   # 安装的时候不使用 -g
  2. 执行webpack命令,运行看效果
  3. 可以在命令行中使用loader
    $ webpack ./entry.js bundle.js --module-bind "css=style!css"

配置文件

创建我们webpack的配置文件webpack.config.js:(这个文件需要手码的哦)

复制代码
var webpack = require('webpack');
var commonsPlugin = new webpack.optimize.CommonsChunkPlugin('common.js');

module.exports = {
    entry: "./main.js",
    output: {
        path: './build', // 图片和 JS 会打包到这里来
        filename: "bundle.js"
    },
    module: {
        loaders: [
            {
                test: /\.css$/,
                loader: "style-loader!css-loader"
            },

            {
                test: /\.less$/,
                loader: 'style-loader!css-loader!less-loader'
            }, // 用 ! 来连接多个 loader

            {
                test: /\.(png|jpg)$/,
                loader: 'url-loader?limit=8192'
            } // 内联 base64 URLs, 限定 <=8k 的图片, 其他的用 URL

        ]
    },
    resolve: {
        extensions: ['', '.js', '.json', 'coffee']
    },
    plugins: [
        new webpack.HotModuleReplacementPlugin(),
        new webpack.NoErrorsPlugin()
    ]

}
复制代码

对这个配置文件解释下:

1) entry:entry可以是个字符串或数组或者是对象。指定打包的入口文件,一个键值对,就是一个入口文件

2) output:包结果文件的名称,在这里我指定它在./build的文件夹打包输出

3) resolve:用于指明程序自动补全识别哪些后缀,
     注意一下, extensions 第一个是空字符串! 对应不需要后缀的情况.

4) module:以及一些正则。当需要加载的文件匹配test的正则时,就会调用后面的loader对文件进行处理,这正是webpack强大的原因。

   1.js的引用

   比如这里定义了凡是.js结尾的文件都是用babel-loader做处理,而.jsx结尾的文件会先经过jsx-loader处理,然后经过babel-loader处理。当然这些loader也需要通过npm install安装

   2.样式及图片的引用

require('./bootstrap.css'); require('./myapp.sass'); var img = document.createElement('img'); img.src = require('./glyph.png');

当你引用 CSS(或者 SASS 吧), Webpack 会将 CSS 内联到 JavaScript 包当中, require() 会在页面当中插入一个<style>标签. 当你引入图片, Webpack 在包当中插入对应图片的 URL, 这个 URL 是由require()返回, 而图片可能被转化成 base64 格式的 dataUrl。但是注意,所有这些要在 webpack.config.js 文件写好对应的 loader:

5) plugins: 这里定义了需要使用的插件,

比如commonsPlugin在打包多个入口文件时会提取出公用的部分,生成common.js

这里还配置了NoErrorsPlugin插件,用来跳过编译时出错的代码并记录,使编译后运行时的包不会发生错误:当然Webpack还有很多其他的配置,具体可以参照它的配置文档

 

发布服务器

  1. 安装运行服务器
    $ npm install webpack-dev-server -g
    $ webpack-dev-server --progress --colors
  2. 服务器可以自动生成和刷新,修改代码保存后自动更新画面
    打开http://localhost:8080/webpack-dev-server/bundle可以看到编译后的网页,这会绑定一个小型express服务器到localhost:8080,来为你的静态资源及bundle(自动编译)服务。通过访问http://localhost:8080/webpack-dev-server/bundle,bundle每次重编译后浏览器页面都会自动更新。
posted @ 2017-03-01 22:16  朱帅  阅读(116)  评论(0编辑  收藏  举报