UNPKG

dio-cli

Version:

CLI for scaffolding dio-cli projects , 前端项目, 构建工具

79 lines (72 loc) 2.3 kB
const path = require("path"); const { resolveCwd } = require("./lib/utils"); const webpack = require("webpack"); const merge = require("webpack-merge"); const CopyWebpackPlugin = require("copy-webpack-plugin"); const HtmlWebpackPlugin = require("html-webpack-plugin"); const ExtractTextPlugin = require("extract-text-webpack-plugin"); const OptimizeCSSPlugin = require("optimize-css-assets-webpack-plugin"); const config = require("./config").build; const baseWebpackConfig = require("./webpack.base")(config); function getAssetsPath(_path) { return path.posix.join(config.assetsSubDirectory, _path); } const webpackConfig = merge(baseWebpackConfig, { devtool: config.productionSourceMap ? "#source-map" : false, output: { path: config.assetsRoot, filename: getAssetsPath("js/[name].[chunkhash].js"), chunkFilename: getAssetsPath("js/[id].[chunkhash].js") }, plugins: [ new webpack.DefinePlugin({ "process.env": config.env }), new webpack.optimize.UglifyJsPlugin({ sourceMap: true }), new ExtractTextPlugin({ filename: getAssetsPath("css/[name].[chunkhash].css") }), new OptimizeCSSPlugin({ cssProcessorOptions: { safe: true } }), new HtmlWebpackPlugin({ title: require(resolveCwd(".dioconfig/config")).title, filename: config.index, template: resolveCwd("template.html"), inject: true, minify: { removeComments: true, removeAttributeQuotes: true }, chunksSortMode: "dependency" }), new webpack.optimize.CommonsChunkPlugin({ name: "vendor", minChunks(module, count) { return ( module.resource && /\.js$/.test(module.resource) && module.resource.indexOf(resolveCwd("node_modules")) === 0 ); } }), new webpack.optimize.CommonsChunkPlugin({ name: "manifest", chunks: ["vendor"] }), new CopyWebpackPlugin([ { from: resolveCwd("static"), to: config.assetsSubDirectory, ignore: [".*"] } ]) // Scope Hoisting webpack 3.4 support // new webpack.optimize.ModuleConcatenationPlugin() ] }); module.exports = webpackConfig;