mirror of
https://github.com/WeBankFinTech/fes.js.git
synced 2025-04-06 03:59:53 +08:00
131 lines
3.6 KiB
JavaScript
131 lines
3.6 KiB
JavaScript
/**
|
|
* Created by harrywan on 2017/6/27.
|
|
*/
|
|
|
|
var path = require('path');
|
|
var ExtractTextPlugin = require('extract-text-webpack-plugin');
|
|
var cssLoaders = (function (options) {
|
|
options = options || {};
|
|
function generateLoaders(loaders) {
|
|
var sourceLoader = loaders
|
|
.map(function (loader) {
|
|
var extraParamChar;
|
|
if (/\?/.test(loader)) {
|
|
loader = loader.replace(/\?/, '-loader?');
|
|
extraParamChar = '&';
|
|
} else {
|
|
loader = loader + '-loader';
|
|
extraParamChar = '?';
|
|
}
|
|
return (
|
|
loader +
|
|
(options.sourceMap ? extraParamChar + 'sourceMap' : '')
|
|
);
|
|
})
|
|
.join('!');
|
|
|
|
if (options.extract) {
|
|
return ExtractTextPlugin.extract('vue-style-loader', sourceLoader);
|
|
} else {
|
|
return ['vue-style-loader', sourceLoader].join('!');
|
|
}
|
|
}
|
|
|
|
return {
|
|
css: generateLoaders(['css']),
|
|
postcss: generateLoaders(['css']),
|
|
less: generateLoaders(['css', 'less']),
|
|
sass: generateLoaders(['css', 'sass?indentedSyntax']),
|
|
scss: generateLoaders(['css', 'sass']),
|
|
stylus: generateLoaders(['css', 'stylus']),
|
|
styl: generateLoaders(['css', 'stylus'])
|
|
};
|
|
})();
|
|
|
|
let presets = ['es2015', 'stage-2']
|
|
let plugins = ['transform-runtime']
|
|
let babelOptions = {
|
|
presets,
|
|
plugins
|
|
}
|
|
let webpackConfig = {
|
|
entry: {
|
|
app: [path.join(__dirname, '../node_modules/core-js/es5/index'), path.resolve(__dirname, '../src/index.js')]
|
|
},
|
|
output: {
|
|
path: path.resolve(__dirname, '../dist'),
|
|
filename: 'fes-ui.js',
|
|
library: 'fes-ui',
|
|
libraryTarget: 'umd',
|
|
umdNamedDefine: true
|
|
},
|
|
externals: {
|
|
vue: {
|
|
root: 'Vue',
|
|
commonjs: 'vue',
|
|
commonjs2: 'vue',
|
|
amd: 'vue'
|
|
}
|
|
},
|
|
resolve: {
|
|
extensions: ['.js', '.vue'],
|
|
modules: [path.join(__dirname, '../node_modules')]
|
|
},
|
|
resolveLoader: {
|
|
modules: [path.join(__dirname, '../node_modules')]
|
|
},
|
|
module: {
|
|
rules: [
|
|
{
|
|
test: /\.vue$/,
|
|
loader: 'vue-loader',
|
|
options: {
|
|
loaders: {
|
|
...cssLoaders,
|
|
js: [{
|
|
loader: 'babel-loader',
|
|
options: babelOptions
|
|
}]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
test: /\.js$/,
|
|
use: [
|
|
{
|
|
loader: 'babel-loader',
|
|
options: babelOptions
|
|
}
|
|
],
|
|
exclude: /node_modules/
|
|
},
|
|
{
|
|
test: /\.json$/,
|
|
loader: 'json-loader'
|
|
},
|
|
{
|
|
test: /\.html$/,
|
|
loader: 'vue-html-loader'
|
|
},
|
|
{
|
|
test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
|
|
loader: 'url-loader',
|
|
query: {
|
|
limit: 10000,
|
|
name: '[name].[hash:7].[ext]'
|
|
}
|
|
},
|
|
{
|
|
test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
|
|
loader: 'url-loader',
|
|
query: {
|
|
limit: 10000,
|
|
name: '[name].[hash:7].[ext]'
|
|
}
|
|
}
|
|
]
|
|
},
|
|
plugins: []
|
|
};
|
|
module.exports = webpackConfig;
|