12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- const path = require('path');
- const ExtractTextPlugin = require('extract-text-webpack-plugin');
- const CaseSensitivePathsPlugin = require('case-sensitive-paths-webpack-plugin');
-
- const pkg = require('./package.json');
- const srcPath = path.resolve(__dirname, 'src');
- const distPath = path.resolve(__dirname, 'dist');
-
- module.exports = (options = {}) => {
- return {
- entry: [
- path.resolve(srcPath, 'entry.js')
- ],
- target: 'web',
- output: {
- path: options.outputPath || distPath,
- filename: 'index.js',
- libraryTarget: 'commonjs2',
- library: pkg.name
- },
- resolve: {
- extensions: ['.js', '.json', '.jsx', '']
- },
- externals: [{
- react: 'react',
- 'react-dom': 'react-dom',
- 'prop-types': 'prop-types'
- }],
- module: {
- loaders: [{
- test: /\.(js|jsx)$/,
- include: srcPath,
- loader: 'babel',
- query: {
- cacheDirectory: true
- }
- }, {
- test: /\.svg$/,
- loader: 'babel!react-svg'
- }, {
- test: /\.css$/,
- include: srcPath,
- loader: ExtractTextPlugin.extract('style', 'css?modules&importLoaders=1&localIdentName=rh5v-[name]_[local]&-autoprefixer!postcss')
- }, {
- test: /\.(eot|ttf|woff|woff2)(\?.*)?$/,
- loader: 'url'
- }]
- },
- plugins: [
- new ExtractTextPlugin('styles.css'),
- new CaseSensitivePathsPlugin()
- ]
- };
- };
|