TransFlow/node_modules/mavon-editor/webpack/webpack.dev.js.bak

157 lines
6.6 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* @Author: HuaChao Chen <CHC>
* @Date: 2017-05-04T23:21:48+08:00
* @Email: chenhuachaoxyz@gmail.com
* @Filename: webpack.dev.js
* @Last modified by: CHC
* @Last modified time: 2017-05-06T22:00:44+08:00
* @License: MIT
* @Copyright: 2017
*/
var path = require('path');
var webpack = require('webpack');
var HtmlWebpackPlugin = require('html-webpack-plugin');
var ExtractTextPlugin = require('extract-text-webpack-plugin');
var WebpackMd5Hash = require('webpack-md5-hash');
// 该插件是对“webpack-md5-hash”的改进在主文件中获取到各异步模块的hash值然后将这些hash值与主文件的代码内容一同作为计算hash的参数这样就能保证主文件的hash值会跟随异步模块的修改而修改。
// var WebpackSplitHash = require('webpack-split-hash');
// 压缩css
var OptimizeCssAssetsPlugin = require('optimize-css-assets-webpack-plugin');
const extractCSS = new ExtractTextPlugin('css/[name].[contenthash:8].css');
module.exports = {
entry: {
index: './src/dev/index.js',
vue: ['vue']
},
output: {
path: path.resolve(__dirname, './dist'),
// publicPath: '/dist/',
filename: 'js/[name].[chunkhash:8].js',
chunkFilename: 'js/[name].[chunkhash:8].js'
},
module: {
rules: [{
test: /\.vue$/,
loader: 'vue-loader'
},
{
test: /\.js$/,
loader: 'babel-loader',
exclude: /node_modules/
},
{
test: /\.(png|jpg|gif)$/,
loader: 'file-loader',
options: { name: '[name].[ext]?[hash]' }
},
{ test: /\.(woff|ttf|eot|svg)/, loader: 'file-loader?name=font/[name].[hash:8].[ext]&publicPath=../' },
{
// css代码分割打包
test: /\.css$/,
// exclude: /node_modules/,
use: extractCSS.extract({
fallback: 'style-loader',
use: [
'css-loader',
{
loader: 'postcss-loader',
options: {
plugins: function() {
return [
// 允许在子中定义要放在最顶层的样式
require('postcss-atroot')({}),
// 允许定义样式函数
require('postcss-mixins')({}),
// import插件
require('postcss-nested-import')({}),
// 类sass-import插件但是没法嵌套导入
// require('postcss-partial-import')({}),
// 嵌套解析插件
require('postcss-nested')({}),
// 可以通过引用方式引用父/其他样式的属性值
require('postcss-nesting')({}),
// 允许自定义选择器别名
require('postcss-custom-selectors')({}),
// 可自定义属性块别名,后面可扩充
require('postcss-extend')({}),
// 允许类sass的变量定义for和each语法
require('postcss-advanced-variables')({}),
// 支持颜色函数color
require('postcss-color-function')({}),
// 支持media的变量定义
require('postcss-custom-media')({}),
// 支持属性自定义
require('postcss-custom-properties')({}),
// 支持media的最大最小值定义 可以通过类似@media screen and (width >= 500px) and (width <= 1200px){}来书写
require('postcss-media-minmax')({}),
// 支持通过@引用本属性块的属性
require('postcss-property-lookup')({}),
// maches函数p:matches(:first-child, .special)解析为p:first-child, p.special
require('postcss-selector-matches')({}),
// 支持not解析p:not(:first-child, .special)解析为p:not(:first-child), p:not(.special)
require('postcss-selector-not')({})
];
}
}
}
]
})
},{
test: /\.styl$/,
loader: 'style-loader!css-loader!stylus-loader'
},{
test: /\.md$/,
loader: 'raw-loader'
}
]
},
resolve: {
alias: {
'vue$': 'vue/dist/vue.esm.js'
}
},
devServer: {
historyApiFallback: true,
disableHostCheck: true,
host: '0.0.0.0',
port: '9090'
// hot: true,
// noInfo: true
},
performance: {
hints: false
},
plugins: [
new webpack.optimize.CommonsChunkPlugin({
names: ['vue', 'common'],
filename: 'js/[name].[chunkhash:8].js',
minChunks: Infinity
}),
new HtmlWebpackPlugin({
filename: 'index.html',
template: 'src/dev/index.html',
inject: true,
hash: false,
chunks: ['common', 'vue', 'index']
}),
// new webpack.HotModuleReplacementPlugin(),
// new ExtractTextPlugin("css/[name].[contenthash:8].css"),
extractCSS,
// 分离js可能引入的css的chunkhash计算
new WebpackMd5Hash(),
// 对css文件进行压缩
new OptimizeCssAssetsPlugin({
assetNameRegExp: /\.css$/g,
cssProcessor: require('cssnano'),
cssProcessorOptions: { discardComments: { removeAll: true } },
canPrint: true
})
// new WebpackSplitHash(),
// new ExtractTextPlugin({ filename: 'bundle.css', disable: false, allChunks: true }),
],
devtool: '#eval-source-map'
}