UNPKG

@molejs/mole-tools

Version:

Configuration and scripts for Mole App.

141 lines (130 loc) 4.19 kB
var path = require('path'); var webpack = require('webpack'); var merge = require('webpack-merge'); var autoprefixer = require('autoprefixer'); var WebpackShellPlugin = require('webpack-shell-plugin') var LodashModuleReplacementPlugin = require('lodash-webpack-plugin'); var FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin'); var ExtractTextPlugin = require("extract-text-webpack-plugin"); var utils = require('./utils'); var vueLoaderConfig = require('./vue-loader.conf'); var getBaseConfig = require('./config'); //是否正式环境 var isProduction = process.env.NODE_ENV === 'production' module.exports = function(params){ var config = getBaseConfig(params); return { output: { //path: params.root, filename:'[name].js', }, resolve: { extensions: ['.js', '.vue', '.json', '.png', '.ts', '.tsx', '.css', '.jsx', '.less'], alias:config.alias, }, plugins:[ new webpack.DefinePlugin({ 'process.env': isProduction ? config.prod.env : config.dev.env, 'process.env.APP_STATIC_PROTOCOL': JSON.stringify(process.env.APP_STATIC_PROTOCOL || 'widget://'), }), new webpack.LoaderOptionsPlugin({ options: { postcss: function () { return [ autoprefixer ]; }, } }), //优化moment new webpack.ContextReplacementPlugin(/moment[\\/]locale$/, /^\.\/(zh-cn)$/), new ExtractTextPlugin({ filename: '[name].css', allChunks: true, disable: false, }), //优化loadash // new LodashModuleReplacementPlugin(), //一坨必备的插件 new webpack.optimize.ModuleConcatenationPlugin(), new webpack.NoEmitOnErrorsPlugin(), new FriendlyErrorsPlugin(), ], 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: /\.vue$/, loader: 'vue-loader', options: vueLoaderConfig }, { test: /upaas-ui.src.*?js$/, loader: 'babel-loader' }, { test: /\.(png|jpe?g|gif|svg)(\?.*)?$/, loader: '@beisen/bsapp-file-loader', query: { isBsApp:true, outputPath(url, filepath){ var p = filepath.replace(utils.resolve('.')+path.sep, '').replace('src'+path.sep, ''); var dir = path.dirname(p).replace(params.root, ''); if (filepath.indexOf('node_modules') > -1) { return { outputPath:'../../www/public/lib/assets', url:'./assets/'+url, fileName:url, } } else { return { outputPath:'../../www/' + dir, url:'./assets/'+url, fileName:url, } } }, name: '[name].[ext]', useRelativePath:false, } }, { test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/, loader: '@beisen/bsapp-file-loader', query: { isBsApp:true, outputPath(url, filepath){ var p = filepath.replace(utils.resolve('.')+path.sep, '').replace('src'+path.sep, ''); // var dir = path.dirname(p); var dir = path.dirname(p).replace(params.root, ''); if (filepath.indexOf('node_modules') > -1) { return { outputPath:'../../www/public/lib/assets', url:'./assets/'+url, fileName:url, } } else { return { outputPath:'../../www/' + dir, url:url, fileName:url, } } }, name: '[name].[ext]', useRelativePath:false, } } ] } } }