前端工程化-webpack初探

为了对前端工程化进一步认识,写点总结记录一下。由于平时主要使用命令行搭建工程(如vue-cli,create-react-app),对于一些配置文件不是很了解,此文使用webpack从零搭建搭建工程,方便以后工作中定制工程需求。

前端工程化的目的

  • 解放生产力
  • 提高生产效率
  • 减少维护成本
  • ci
  • 等等

搭建前端工程常见的需求

  • 规范代码-eslint
  • 进行javascript预处理
  • 进行css预处理
  • 自动编译
  • 压缩合并静态资源文件

webpack搭建工程具体实现

webpack.config.js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
var webpack = require('webpack');
module.export = {
entry: _dirname + "/app/index.js", // 入口文件
output: {
path: _dirname + "/public", //输出文件路径
filename: "bundle.js" //输出文件名
},
module: {
loaders:[ //加载器list
{
test: /\.js$/,
excule: /node_modules/,
loader: 'babel',
query: {
presets: [
'es2015',
'react'
]
}
},
{
test: /\.scss$/,
loader: 'style!css!postcss!sass'
},
{
test: /\.css$/,
loader: ExtractTextPlugin.extract('css')
}
],
postcss: function () {
return [autoprefixer]
},
plugins: [
new webpack.optimize.UglifyJsPlugin(), //压缩代码
new webpack.DefinedPlugin({
'process.env.NODE_ENV' : 'production' // 见注1
}),
new WebpackMd5Hash(),
new ExtractTextPlugin("bundle-[contenthash].css") // 根据hash值进行缓存控制静态资源css文件
]
},
devServer: { //web server 配置
contentBase: "./public",
inline: true
}
}

总结
这只是使用webpack的一些基本功能,未来几周继续学习前端工程化知识