@molejs/mole-tools
Version:
Configuration and scripts for Mole App.
139 lines (134 loc) • 3.81 kB
JavaScript
const fs = require('fs');
const path = require('path');
const webpack = require('webpack');
const merge = require('webpack-merge');
const ExtractTextPlugin = require("extract-text-webpack-plugin");
var WebpackShellPlugin = require('webpack-shell-plugin');
var LodashModuleReplacementPlugin = require('lodash-webpack-plugin');
const OptimizeJsPlugin = require("optimize-js-plugin");
const baseWebpackConfig = require('./base.conf');
const utils = require('./utils')
module.exports = function(params) {
var configureType = params.configureType; //配置文件类型
// 获取入口配置
var entry = utils.getEntryAliasList(params);
// console.log(entry)
// console.log(params.root)
//return;
// console.log(path.resolve('./tools/loader/bsapp-assets.js'));
var mergeConf = merge(baseWebpackConfig(params), {
//页面入口文件配置
entry: entry,
// output: {
// //path: params.root,
// filename:'[name].js',
// },
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',
}, {
loader:'less-loader',
}],
}),
},{
test:/\.css$/,
use: ExtractTextPlugin.extract({
fallback: 'style-loader',
use: [{
loader:'css-loader',
}],
}),
}]
},
resolveLoader: {
modules: [
'node_modules',
// path.resolve(__dirname, 'loader')
]
},
plugins: [
// new webpack.optimize.CommonsChunkPlugin({
// name:vendorKey, //输出公共库文件名
// }),
// new OptimizeJsPlugin({
// sourceMap: false
// }),
// new webpack.optimize.ModuleConcatenationPlugin(),
// new LodashModuleReplacementPlugin(),
new ExtractTextPlugin({
filename:'[name].css',
allChunks: true,
}),
new WebpackShellPlugin({
onBuildExit: ['node ./node_modules/@molejs/mole-tools/scripts/build-assets.js']
}),
]
}, params.extraConfig);
return mergeConf;
};