const webpack = require('webpack')css
const path = require('path')html
// const CompressionWebpackPlugin = require('compression-webpack-plugin');jquery
const productionGzipExtensions = ['js', 'css']webpack
module.exports = {web
// 基本路徑windows
publicPath: process.env.NODE_ENV === 'production' ? '/production-sub-path/' : './',api
// 輸出文件目錄babel
outputDir: 'dist',app
// eslint-loader 是否在保存的時候檢查webpack-dev-server
pages: {
index: {
// page 的入口
entry: 'src/dyreleaseweb/main.js',
// 模板來源
template: 'public/index.html',
filename: 'index.html',
favicon: 'public/logo.ico',
// 當使用 title 選項時,
// template 中的 title 標籤須要是 <title><%= htmlWebpackPlugin.options.title %></title>
title: '通稿稿件2.0',
// 在這個頁面中包含的塊,默認狀況下會包含
// 提取出來的通用 chunk 和 vendor chunk。
chunks: ['chunk-vendors', 'chunk-common', 'index']
},
topic: {
// page 的入口
entry: 'src/topic/main.js',
// 模板來源
template: 'public/topic.html',
// 在 dist/index.html 的輸出
filename: 'topic.html',
favicon: 'public/logo.ico',
title: 'Topic Page',
chunks: ['chunk-vendors', 'chunk-common', 'index']
}
// 當使用只有入口的字符串格式時,
// 模板會被推導爲 `public/subpage.html`
// 而且若是找不到的話,就回退到 `public/index.html`。
// 輸出文件名會被推導爲 `subpage.html`。
// subpage: 'src/subpage/main.js'
},
chainWebpack: () => {},
configureWebpack: {
plugins: [
new webpack.ProvidePlugin({
$: 'jquery',
jQuery: 'jquery',
'windows.jQuery': 'jquery'
})
]
},
productionSourceMap: true,
// css相關配置
css: {
// 是否使用css分離插件 ExtractTextPlugin
extract: true,
// 開啓 CSS source maps?
sourceMap: false,
// css預設器配置項
loaderOptions: {
css: {
},
postcss: {
/* ident: 'postcss',
plugins: (loader) => [
require('postcss-import')({ root: loader.resourcePath }),
require('postcss-preset-env')(),
require('cssnano')()
] */
}
},
// 啓用 CSS modules for all css / pre-processor files.
modules: true // 去掉文件名中的 .module
},
// use thread-loader for babel & TS in production build
// enabled by default if the machine has more than 1 cores
parallel: require('os').cpus().length > 1,
// webpack-dev-server 相關配置
devServer: {
open: process.platform === 'darwin',
host: '10.10.0.102',
port: 8066,
https: false,
hotOnly: false,
proxy: {
'/api': {
target: 'http://10.10.0.102:9010/',
ws: true,
changeOrigin: true,
pathRewrite: {
'^/api': '/gateway'
}
},
'/foo': {
target: '<other_url>'
}
},
before: app => {}
},
// 第三方插件配置
pluginOptions: {
// ...
}
// eslint-disable-next-line eol-last
}