nginx-tutorial/examples/reactapp/config/webpack.config.base.js

114 lines
3.2 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

/**
* Created by Zhang Peng on 2017/6/14.
*/
const path = require('path')
const webpack = require('webpack')
const HtmlWebpackPlugin = require('html-webpack-plugin')
module.exports = {
// 这里应用程序开始执行
// webpack 开始打包
// 本例中 entry 为多入口
entry: {
// 第三方库
vendor: ['babel-polyfill']
},
// webpack 如何输出结果的相关选项
output: {
// 所有输出文件的目标路径
// 必须是绝对路径(使用 Node.js 的 path 模块)
path: path.resolve(__dirname, '../dist'),
// 「入口分块(entry chunk)」的文件名模板(出口分块?)
// filename: "bundle.min.js",
// filename: "[name].js", // 用于多个入口点(entry point)(出口点?)
// filename: "[chunkhash].js", // 用于长效缓存
filename: '[name].[hash:8].js',
// 「source map 位置」的文件名模板
sourceMapFilename: '[name].map'
},
// 关于模块配置
module: {
// 模块规则(配置 loader、解析器等选项
rules: [
// 这里是匹配条件,每个选项都接收一个正则表达式或字符串
// test 和 include 具有相同的作用,都是必须匹配选项
// exclude 是必不匹配选项(优先于 test 和 include
// 最佳实践:
// - 只在 test 和 文件名匹配 中使用正则表达式
// - 在 include 和 exclude 中使用绝对路径数组
// - 尽量避免 exclude更倾向于使用 include
{
// 语义解释器,将 js/jsx 文件中的 es2015/react 语法自动转为浏览器可识别的 Javascript 语法
test: /\.jsx?$/,
include: path.resolve(__dirname, '../src'),
exclude: /node_modules/,
// 应该应用的 loader它相对上下文解析
// 为了更清晰,`-loader` 后缀在 webpack 2 中不再是可选的
// 查看 webpack 1 升级指南。
loader: 'babel-loader'
},
{
// css 加载
test: /\.css$/,
use: ['style-loader', 'css-loader']
},
{
// less 加载
test: /\.less$/,
use: ['style-loader', 'css-loader', 'less-loader']
},
{
// 字体加载
test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
loader: 'url-loader',
options: {
limit: 10000,
name: 'static/fonts/[name].[hash:8].[ext]'
}
}
]
},
// 解析模块请求的选项
// (不适用于对 loader 解析)
resolve: {
// 使用的扩展名
extensions: ['.js', '.jsx', '.json'],
alias: {
'@': path.resolve(__dirname, '../src')
}
},
// 附加插件列表
plugins: [
/**
* https://doc.webpack-china.org/plugins/html-webpack-plugin/
* 用于简化 HTML 文件index.html的创建提供访问 bundle 的服务
*/
new HtmlWebpackPlugin({
title: 'reactapp',
template: 'public/index.html',
favicon: 'public/favicon.ico'
}),
// 将多个入口起点之间共享的公共模块,生成为一些 chunk并且分离到单独的 bundle 中
new webpack.optimize.CommonsChunkPlugin({
name: 'vendor' // 指定公共 bundle 的名字
})
]
}