Webpack模块化

Webpack模块化的实践

Webpack 是德国开发者 Tobias Koppers 开发的模块加载器,在 Webpack 当中, 所有的资源都被当作是模块, js, css, 图片等等,对应各种不同文件类型的资源, Webpack 有对应的模块 loader,Webpack可以看做是模块打包机:它做的事情是,分析你的项目结构,找到JavaScript模块以及其它的一些浏览器不能直接运行的拓展语言(Scss,TypeScript等),并将其打包为合适的格式以供浏览器使用。

一步一步来配置

它的配置文件是 webpack.config.js.

1
2
3
4
5
6
7
8
9
10
// webpack.config.js
module.exports = {
entry: {
bundle1: './main1.js',
bundle2: './main2.js'
},
output: {
filename: '[name].js'
}
};

Webpack 允许你在js文件中require CSS , 通过 CSS-loader来预处理css文件.

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

你需要使用loaders来转换CSS 文件. 第一个是 CSS-loader 来读取CSS文件, 另外一个是Style-loader 是将style样式插入到html中,用!连接。
同样,Webpack 允许你在js文件中require图片 , 通过 url-loader和file-loader来预处理图片文件.

Webpack 可以使用UglifyJs Plugin 处理js。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var webpack = require('webpack');
var uglifyJsPlugin = webpack.optimize.UglifyJsPlugin;
module.exports = {
entry: './main.js',
output: {
filename: 'bundle.js'
},
plugins: [
new uglifyJsPlugin({
compress: {
warnings: false
}
})
]
};

还可以使用html-webpack-plugin 创建 index.html ,open-browser-webpack-plugin 打开浏览器。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var HtmlwebpackPlugin = require('html-webpack-plugin');
var OpenBrowserPlugin = require('open-browser-webpack-plugin');
module.exports = {
entry: './main.js',
output: {
filename: 'bundle.js'
},
plugins: [
new HtmlwebpackPlugin({
title: 'Webpack-demos',
filename: 'index.html'
}),
new OpenBrowserPlugin({
url: 'http://localhost:8080'
})
]
};

还有热更新之类的各种插件等你玩哦~~如果喜欢用JS管理一切资源,那webpack真是必备神器了!

当然还要记得webpack的命令行:

  • webpack – 构建文件
  • webpack -p – 发布
  • webpack –watch – 监听项目
  • webpack -d – 包含 source maps方便调试
  • webpack –colors – 让打包界面更好看

构建项目的时候, 你可以把启动项写进package.json。

1
2
3
4
5
6
7
8
9
// package.json
{
// ...
"scripts": {
"dev": "webpack-dev-server --devtool eval --progress --colors",
"deploy": "NODE_ENV=production webpack -p"
},
// ...
}

然后跑起来吧~

1
npm run dev