UNPKG

1.5 kBJavaScriptView Raw
1/* global __dirname, require, module*/
2
3const webpack = require('webpack');
4const UglifyJsPlugin = webpack.optimize.UglifyJsPlugin;
5const path = require('path');
6const env = require('yargs').argv.env; // use --env with webpack 2
7const pkg = require('./package.json');
8const CleanWebpackPlugin = require('clean-webpack-plugin');
9
10process.env.BABEL_ENV = 'production';
11process.env.NODE_ENV = 'production';
12
13let libraryName = pkg.name;
14
15let plugins = [], outputFile;
16
17if (env.NODE_ENV === 'production') {
18 plugins.push(new UglifyJsPlugin({ minimize: true }));
19 outputFile = libraryName + '.min.js';
20} else {
21 plugins.push(new CleanWebpackPlugin(['lib']));
22 outputFile = libraryName + '.js';
23}
24
25const config = {
26 entry: __dirname + '/src/index.js',
27 devtool: 'source-map',
28 output: {
29 path: __dirname + '/lib',
30 filename: outputFile,
31 library: libraryName,
32 libraryTarget: 'umd',
33 umdNamedDefine: true
34 },
35 module: {
36 rules: [
37 {
38 test: /(\.jsx|\.js)$/,
39 loader: 'babel-loader',
40 exclude: /(node_modules|bower_components)/
41 },
42 {
43 test: /(\.jsx|\.js)$/,
44 loader: 'eslint-loader',
45 exclude: /node_modules/
46 }
47 ]
48 },
49 resolve: {
50 modules: [path.resolve('./node_modules'), path.resolve('./src')],
51 extensions: ['.json', '.js']
52 },
53 plugins: plugins,
54 externals: {
55 react: {
56 root: 'React',
57 commonjs2: 'react',
58 commonjs: 'react',
59 amd: 'react',
60 }
61 }
62};
63
64module.exports = config;