131 lines
2.5 KiB
JavaScript
131 lines
2.5 KiB
JavaScript
|
/*
|
|||
|
* @Author: liyxt
|
|||
|
* @Date: 2019-09-12 10:17:44
|
|||
|
* @LastEditors: liyxt
|
|||
|
* @LastEditTime: 2020-03-25 13:52:00
|
|||
|
* @Description: file content
|
|||
|
*/
|
|||
|
/**
|
|||
|
* 公共配置
|
|||
|
*/
|
|||
|
const path = require('path');
|
|||
|
const CopyWebpackPlugin = require('copy-webpack-plugin');
|
|||
|
const ExtractTextPlugin = require('extract-text-webpack-plugin');
|
|||
|
|
|||
|
//优化配置,对于使用CDN作为包资源的引用从外到内的配置
|
|||
|
const externals = {
|
|||
|
'nc-lightapp-mobile': 'nc-lightapp-mobile',
|
|||
|
'nc-lightapp-front': 'nc-lightapp-front',
|
|||
|
'platform-workbench': 'platform-workbench',
|
|||
|
'platform-report': 'platform-report',
|
|||
|
'platform-login': 'platform-login',
|
|||
|
'nc-report': 'nc-report',
|
|||
|
'babel-polyfill': 'babel-polyfill',
|
|||
|
'nc-graphic-report': 'nc-graphic-report',
|
|||
|
axios: {
|
|||
|
root: 'axios',
|
|||
|
var: 'axios',
|
|||
|
commonjs: 'axios',
|
|||
|
commonjs2: 'axios',
|
|||
|
amd: 'axios'
|
|||
|
},
|
|||
|
react: {
|
|||
|
root: 'React',
|
|||
|
var: 'React',
|
|||
|
commonjs: 'react',
|
|||
|
commonjs2: 'react',
|
|||
|
amd: 'react'
|
|||
|
},
|
|||
|
// redux: {
|
|||
|
// root: 'Redux',
|
|||
|
// var: 'Redux',
|
|||
|
// commonjs: 'redux',
|
|||
|
// commonjs2: 'redux',
|
|||
|
// amd: 'redux'
|
|||
|
// },
|
|||
|
// 'react-redux': {
|
|||
|
// root: 'ReactRedux',
|
|||
|
// var: 'ReactRedux',
|
|||
|
// commonjs: 'react-redux',
|
|||
|
// commonjs2: 'react-redux',
|
|||
|
// amd: 'react-redux'
|
|||
|
// },
|
|||
|
'react-router': {
|
|||
|
root: 'ReactRouter',
|
|||
|
var: 'ReactRouter',
|
|||
|
commonjs: 'react-router',
|
|||
|
commonjs2: 'react-router',
|
|||
|
amd: 'react-router'
|
|||
|
},
|
|||
|
'react-dom': {
|
|||
|
root: 'ReactDOM',
|
|||
|
var: 'ReactDOM',
|
|||
|
commonjs: 'react-dom',
|
|||
|
commonjs2: 'react-dom',
|
|||
|
amd: 'react-dom'
|
|||
|
}
|
|||
|
};
|
|||
|
|
|||
|
//默认加载扩展名、相对JS路径模块的配置
|
|||
|
const resolve = {
|
|||
|
extensions: ['.jsx', '.js', '.less', '.css', '.json'],
|
|||
|
alias: {
|
|||
|
src: path.resolve(__dirname, '../src/')
|
|||
|
}
|
|||
|
};
|
|||
|
|
|||
|
//Loader
|
|||
|
const rules = [
|
|||
|
{
|
|||
|
test: /\.js[x]?$/,
|
|||
|
exclude: /node_modules/,
|
|||
|
use: [
|
|||
|
{
|
|||
|
loader: 'babel-loader'
|
|||
|
}
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
test: /\.css$/,
|
|||
|
// use: ExtractTextPlugin.extract({
|
|||
|
use: ['style-loader', 'css-loader', 'postcss-loader']
|
|||
|
// fallback: 'style-loader'
|
|||
|
// })
|
|||
|
},
|
|||
|
{
|
|||
|
test: /\.less$/,
|
|||
|
// use: ExtractTextPlugin.extract({
|
|||
|
use: ['style-loader', 'css-loader', 'postcss-loader', 'less-loader']
|
|||
|
// fallback: 'style-loader'
|
|||
|
// })
|
|||
|
},
|
|||
|
{
|
|||
|
test: /\.(png|jpg|jpeg|gif|eot|ttf|woff|woff2|svg|svgz)(\?.+)?$/,
|
|||
|
exclude: /favicon\.png$/,
|
|||
|
use: [
|
|||
|
{
|
|||
|
loader: 'url-loader'
|
|||
|
}
|
|||
|
]
|
|||
|
}
|
|||
|
];
|
|||
|
|
|||
|
//webpack通用配置
|
|||
|
const commonConfig = {
|
|||
|
// 打包时排除
|
|||
|
externals,
|
|||
|
// loaders
|
|||
|
module: {
|
|||
|
rules
|
|||
|
},
|
|||
|
plugins: [
|
|||
|
// new ExtractTextPlugin({
|
|||
|
// filename: '[name].css',
|
|||
|
// allChunks: true
|
|||
|
// })
|
|||
|
],
|
|||
|
resolve
|
|||
|
};
|
|||
|
|
|||
|
module.exports = commonConfig;
|