UNPKG

@beisen/ethos

Version:

beisencloud pc react components

151 lines (137 loc) 4.49 kB
/** * Created by liubo on 15/8/12. */ var webpack = require("webpack"); var path = require("path"); var root = path.join(process.cwd(), "./"); //根目录 var node_modules = path.join(root,'./node_modules'); var ExtractTextPlugin = require("extract-text-webpack-plugin"); var WrapperPlugin = require('@beisen/wrapper-webpack-plugin'); var Visualizer = require('webpack-visualizer-plugin'); let CodeSplitWebpackPlugin = require('@beisen/code-split-component/webpack'); // var CaseSensitivePathsPlugin = require('case-sensitive-paths-webpack-plugin'); // var VersionPlugin = require('@beisen/versionplugin'); module.exports = function(options) { //入口 var entry = options.entry; //压缩css var ExtractTextPluginConfig = (options.minimize)? new ExtractTextPlugin("css/[name]-[chunkhash].min.css",{disable: false,allChunks: true}): new ExtractTextPlugin("css/[name].css",{disable: false,allChunks: true}); var output = { library: "@beisen/ethos", libraryTarget: "umd", path: path.resolve(root, "./dist/"), filename: (options.minimize)? "[name]-[chunkhash].bundle.min.js" : "[name].bundle.js", sourceMapFilename: (options.minimize)? "[name]-[chunkhash].bundle.min.js.map": "[name].bundle.js.map" }; var alias = { // "rc-util": node_modules + '/@beisen/DateTime/src/rc-util/lib/index.js', // "classnames" : node_modules + '/classnames/index' //, "redux-async-connect": nodeRoot + "/@beisen/talent-core/libs/libs/redux-async-connect/index.js" }; //加载器 var loaders = [ { test: /\.js[x]?$/ ,loader: 'babel' , exclude: /(node_modules|bower_components)/ }, { test: /\.css$/, loader: ExtractTextPlugin.extract( "style-loader", "css-loader?sourceMap", { publicPath: "../" } )}, { test: /\.scss$/, loader: ExtractTextPlugin.extract( "style-loader", "css-loader!sass-loader", { publicPath: "../" } )}, { test: /\.(ttf|eot|svg|woff(2)?)(\?[^('|")]*)?$/, loader: "file-loader?name=images/[hash:8].[name].[ext]" }, { test: /\.(png|jpg|gif)$/, loader: "file-loader?name=images/[hash:8].[name].[ext]" } ]; var DefinePluginConfig = !options.minimize? { __CLIENT__: true, __SERVER__: false, __DEVELOPMENT__: true, __DEVTOOLS__: false } : { __DEVELOPMENT__: false, 'process.env': { // Useful to reduce the size of client-side libraries, e.g. react NODE_ENV: JSON.stringify('production') } } //插件 var plugins = [ new webpack.optimize.OccurenceOrderPlugin(), new webpack.optimize.DedupePlugin(), new webpack.DefinePlugin(DefinePluginConfig), ExtractTextPluginConfig, new Visualizer({ filename: '../statistics.html' }) // new VersionPlugin() // new CaseSensitivePathsPlugin() ]; // if(options.wrap) { // plugins.push( // new WrapperPlugin({ // header: 'window.__preloadEthos = function(root) {', // footer: '\n};window.__preloadEthos(this);' // }) // ) // } plugins.push(new CodeSplitWebpackPlugin()); if (options.minimize){ plugins.push( new webpack.optimize.UglifyJsPlugin({ compress: { warnings: false } ,sourceMap: true ,mangle: { except: ['$', 'm', 'webpackJsonpCallback'] } }) ) } // 使用webpack打包优化插件 var WebpackCompilePlugin = require('@beisen/webpack-compile-plugin'); plugins.push(new WebpackCompilePlugin({ 'singler': 'ETHOS' })); var config = { entry: entry ,output: output ,module: { loaders: loaders ,preLoaders: [ { test: /\.js$/, loader: "strip-loader?strip[]=alert,strip[]=debug,strip[]=console.log,strip[]=console.info" } ] } ,plugins: plugins ,resolve: { alias: alias ,extensions: ['', '.json', '.webpack.js', '.web.js', '.js', '.jsx'] } ,externals: options.externals || {} ,devtool: options.devtool ,node : { fs : "empty" } } var compile = webpack(config); compile.run(function(){ }); return config; }