Webpack实战学习

2017-04-11  本文已影响27人  陈川Lethe

Webpack涉及到的命令行:

# 安装到全局
$ npm install webpack -g

# 安装到项目本地依赖
$ npm install webpack --save-dev

# 查看 webpack 版本信息
$ npm info webpack

# 安装指定版本的 webpack
$ npm install webpack@1.14.0 --save-dev

# 安装Webpack开发工具
$ npm install webpack-dev-server --save-dev

# 安装css、style loader
$ npm install css-loader style-loader -save-dev

webpack实际操作:

# 基本方法
$ webpack

# 提供watch方法,实时进行打包更新
$ webpack -w

# 对打包后的文件进行压缩,提供production
$ webpack -p

# 提供source map,方便调试。
$ webpack -d

最最基础的用法:

建一个文件夹,然后在文件夹根目录下面建这个几个文件:

<!-- index.html -->
<html>
<head>
  <meta charset="utf-8">
</head>
<body>
  <script src="bundle.js"></script>
</body>
</html>
// entry.js
document.write(require('./module.js'))
// module.js
module.exports = 'It is OK!'

在命令行执行以下指令:

$ webpack entry.js bundle.js

这条命令的作用是将entry.js打包到bundle.js
其中entry.js还引用到module.js,module.js也被一并打包到bundle.js

这时双击打开index.html文件,就可以看到 “It is OK!” 几个字。

Loader:

Webpack本身只能处理javascript文件,有了Loader之后,几乎可以通过require来加载任何类型的文件或者模块,比如:图片、JSX、LESS等。


--------此处省略Loader的特性等,先把例子写起来再说--------


Loader的使用:

安装Loader:
$ npm install css-loader style-loader

还是上面的例子,现在我们来写一个css:

/* style.css */
body {
    background-color: grey;
}

然后在entry.js中引入这个文件:

// entry.js
require("./style.css");
document.write(require('./module.js'));

接着命令行执行:

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

打包好之后,刷新index.html,就可以看到刚刚写的css样式了。

但是每次要在命令行输入这么长的命令,显然很不好,所以要搞个配置文件,来简化命令,然后其他人参与这个项目,跟着配置文件走就行了。

配置文件:

Webpack在运行时,除了命令行执行操作,也可以通过配置文件来执行。默认情况下会搜索当前目录的 webpack.config.js ,这个文件是一个node.js模块,返回一个json格式的配置信息对象,或者通过 --config 选项来指定配置文件。

来建一个配置文件 webpack.config.js:
// webpack.config.js
var webpack = require('webpack');

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

在配置文件中配置好入口、出口、loader,在命令行执行:

$ webpack

非常一颗赛艇。

插件:

插件可以做很多loader做不了的事情。
wenpack已经内置很多常用的插件,也可以通过npm来安装第三方插件。

动词打次搞起来:

我们自己来搞一个插件,修改一下webpack.config.js:

var webpack = require('webpack');

module.exports = {
    entry: './entry.js',
    output: {
        path: __dirname,
        filename: 'bundle.js'
    },
    module: {
        loaders: [
            {test: /\.css$/, loader: 'style-loader!css-loader'}
        ]
    },
    plugins: [
        new webpack.BannerPlugin('苟利国家生死以,岂因祸福避趋之!')
    ]
}

可以看到改动的地方是增加了:

plugins: [
        new webpack.BannerPlugin('苟利国家生死以,岂因祸福避趋之!')
    ]

改好之后,执行webpack命令:

$ webpack

这时,我们看一下bundle.js,可以发现文件最上面多了一行注释:

/*! 苟利国家生死以,岂因祸福避趋之! */
/******/ (function(modules) { // webpackBootstrap
/******/    // The module cache
/******/    var installedModules = {};
...

哈哈,溜得很。

上一篇下一篇

猜你喜欢

热点阅读