webpack是一个和菠菜网站出租(企娥217-1793-408)gulp差不多的自动化的构建工具,功能还是很强大的,能够处理图片压缩,能够处理js,能够处理那些预编译的语言比如sass|scss、css等等,这一切都要归功于有个强大的loader功能。
准备篇
webpack是一个用node的npm包管理工具上的工具,下载和安装:npm install -g --save-dev webpack类似于这样。
它主要包括文件:webpack.config.js、package.json(初始化自动生成,里面有很多版本相关的信息,也包括安装的loaders等等)、入口文件、出口文件。
在webpack.config.js里面,主要代码框架:
const path = require('path');
const ExtractTextPlugin = require('extract-text-webpack-plugin');
module.exports = {
entry: './src/main.js',
output: {
filename: 'bundle.js', //输出的文件名
path: path.resolve(dirname, 'build') //输出文件所在的目录
},
devServer: { // 检测代码变化并自动重新编译并自动刷新浏览器
contentBase: path.resolve(dirname, 'build') // 设置静态资源的根目录
},
module: { // 如何处理项目中不同类型的模块
rules: [ // 用于规定在不同模块被创建时如何处理模块的规则数组
{
test: /(.jsx|.js)$/,
use: {
loader: "babel-loader",
options: {
presets: [
"env", "react"
]
}
},
exclude: path.resolve(__dirname, 'node_modules'),
include: path.resolve(__dirname, 'src'),
},
{//css单独打包
test: /.scss/,
use: ExtractTextPlugin.extract({
use: [{
loader:"css-loader"
},{
loader: 'sass-loader'
}],
fallback: "style-loader"
})
},
{
test: /.css$/,
use: ExtractTextPlugin.extract({
use: ['css-loader'],
}),
},
{
test: /.(png|jpg)$/,
loader: 'url-loader?limit=8192',
}
]
},
plugins: [
new ExtractTextPlugin({
filename: 'main-page.css',
}),
]
};