UNPKG

@molejs/mole-tools

Version:

Configuration and scripts for Mole App.

135 lines (130 loc) 3.79 kB
var fs = require('fs'); var webpack = require('webpack') // var LodashModuleReplacementPlugin = require('lodash-webpack-plugin'); // var BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin; var path = require('path'); var merge = require('webpack-merge'); var ExtractTextPlugin = require("extract-text-webpack-plugin"); var LodashModuleReplacementPlugin = require('lodash-webpack-plugin'); const OptimizeJsPlugin = require("optimize-js-plugin"); // var WebpackShellPlugin = require('webpack-shell-plugin'); var OptimizeCSSPlugin = require('optimize-css-assets-webpack-plugin'); // var UglifyJsParallelPlugin = require('webpack-uglify-parallel'); // var HtmlWebpackPlugin = require('html-webpack-plugin'); var os = require('os'); var utils = require('./utils') var baseWebpackConfig = require('./base.conf'); module.exports = function(params){ //入口文件配置 var entry = utils.getEntryAliasList(params); const webpackConfig = merge(baseWebpackConfig(params), { //页面入口文件配置 entry: entry, externals: { moment:{ commonjs: "moment", amd: "moment", root: "moment", }, fastclick:{ commonjs: "fastclick", amd: "fastclick", root: "FastClick", }, 'object-path':{ commonjs: "object-path", amd: "object-path", root: "objectPath", }, Vue: "Vue", // lodash:{ // commonjs: "lodash", // amd: "lodash", // root: "_", // }, upaas:{ commonjs: "upaas", amd: "upaas", root: "UPAAS", }, }, module: { rules: [ { test: /\.(ts|tsx)$/, use: [ { loader: require.resolve('ts-loader'), options: { // disable type checker - we will use it in fork plugin transpileOnly: true, }, }, ], }, { test: /\.(js|jsx)$/, use: [ { loader: 'keep-loader', options:{ keep:params.env.isBuildBeta ? "beta" : "official", } }, { loader: 'babel-loader', options:{ cacheDirectory:!params.env.isProduction, }, } ], include: [params.source, path.resolve(params.root, './node_modules/@beisen/bsapp-fetch'), path.resolve(params.root, './node_modules/@beisen/bsapp-bssdk'), path.resolve(params.root, './node_modules/vue-echarts-v3/src')] },{ test:/\.less$/, use: ExtractTextPlugin.extract({ fallback: "style-loader", use: [{ loader:'css-loader', }, { loader:'postcss-loader', }, 'less-loader' ], }), },{ test:/\.css$/, use: ExtractTextPlugin.extract({ fallback: "style-loader", use: ['css-loader'], }), }] }, plugins: [ // new WebpackShellPlugin({ // onBuildExit: ['node ./bin/build-prod-assets.js'], // }), new OptimizeJsPlugin({ sourceMap: false }), // new webpack.optimize.ModuleConcatenationPlugin(), new LodashModuleReplacementPlugin(), ] }); if (params.isUglifyJs) { webpackConfig.plugins.unshift( new webpack.optimize.UglifyJsPlugin({ output: { comments: false, // remove all comments }, compress: { warnings: false, drop_debugger: true, drop_console: true, }, sourceMap: false }) ); } return webpackConfig; }