UNPKG

react-component-template

Version:
131 lines (105 loc) 2.76 kB
'use strict'; const webpack = require('webpack'); const HtmlWebpackPlugin = require('html-webpack-plugin'); const path = require('path'); const COMPONENT_NAME = process.env.npm_package_config_component; const pathTo = path.join.bind(null, process.cwd()); if (!COMPONENT_NAME) { throw Error('<package.json>.config.component name is required'); } const loaders = [ { test: /\.css$/, loader: 'style-loader!css-loader?sourceMap&modules&localIdentName=[path][name]---[local]', include: [pathTo('src', 'example')] }, { test: /\.js$/, loader: 'babel-loader', include: [pathTo('src')] } ]; const definePlugin = new webpack.DefinePlugin({ 'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV), 'process.env.npm_package_name': JSON.stringify(process.env.npm_package_name) }); const resolve = {}; const stats = {colors: true}; const development = { devtool: '#source-map', entry: [ pathTo('src', 'example', 'Example.js'), 'webpack-dev-server/client?http://localhost:8080' ], output: {filename: 'bundle.js', path: pathTo('example')}, plugins: [ new HtmlWebpackPlugin(), definePlugin ], module: { loaders }, resolve, stats, devServer: { historyApiFallback: true, stats: { // Do not show list of hundreds of files included in a bundle chunkModules: false, colors: true } } }; const ghPages = { devtool: '#source-map', entry: pathTo('src', 'example', 'Example.js'), output: {filename: 'bundle.js', path: pathTo('example')}, plugins: [new HtmlWebpackPlugin(), definePlugin], module: {loaders}, resolve, stats }; const dist = { devtool: '#source-map', entry: pathTo('src', 'index.js'), output: { filename: `${require(pathTo('package.json')).name}.js`, path: pathTo('build'), library: COMPONENT_NAME, libraryTarget: 'umd' }, plugins: [definePlugin], module: {loaders}, resolve, stats, externals: { react: {root: 'React', commonjs2: 'react', commonjs: 'react', amd: 'react'} } }; const min = { devtool: '#source-map', entry: pathTo('src', 'index.js'), output: { filename: `${require(pathTo('package.json')).name}.min.js`, path: pathTo('build'), library: COMPONENT_NAME, libraryTarget: 'umd' }, plugins: [ definePlugin, new webpack.optimize.UglifyJsPlugin() ], module: {loaders}, resolve, stats, externals: { react: {root: 'React', commonjs2: 'react', commonjs: 'react', amd: 'react'} } }; const test = { output: {libraryTarget: 'commonjs2'}, module: {loaders} }; const configs = {development, ghPages, dist, min, test}; const build = process.env.BUILD || process.env.NODE_ENV || 'development'; module.exports = configs[build];