UNPKG

slush-laima

Version:

The generator of Laima https://github.com/indigofeather/laima

85 lines (81 loc) 2.75 kB
var path = require('path'); var webpack = require('webpack'); var autoprefixer = require('autoprefixer'); var CopyWebpackPlugin = require('copy-webpack-plugin'); var ExtractTextPlugin = require('extract-text-webpack-plugin'); var PathRewriterPlugin = require('webpack-path-rewriter'); var HtmlWebpackPlugin = require('html-webpack-plugin'); var git = require('git-rev-sync'); var isDevelopment = process.env.NODE_ENV === 'development'; var opts = { baseUrl: path.resolve(__dirname, 'src', 'js'), build: path.resolve(__dirname, 'build'), bundle: isDevelopment ? 'bundle-dev.js' : 'bundle-[hash:7].js', vendor: isDevelopment ? 'vendor-dev.js' : 'vendor-[hash:7].js', css: isDevelopment ? 'application-dev.css' : 'application-[contenthash:7].css', img: isDevelopment ? '[path][name]-dev.[ext]' : '[path][name]-[hash:7].[ext]', font: isDevelopment ? '[path][name]-dev.[ext]' : '[path][name]-[hash:7].[ext]' }; module.exports = { context: opts.baseUrl, cache: true, entry: { app: ['index.js', '../css/application.sass'], vendor: ['g11n'] }, output: { path: opts.build, publicPath: '', filename: opts.bundle }, devtool: 'source-map', module: { loaders: [ { test: /\.js$/, loader: ['babel-loader'], exclude: /node_modules/, query: { cacheDirectory: true, presets: ['react', 'es2015', 'stage-0'], plugins: ['add-module-exports'], "env": { "development": { "presets": ["react-hmre"] } } } }, { test: /\.scss$|\.sass$/, loader: ExtractTextPlugin.extract('css-loader?-minimize&sourceMap!postcss!sass-loader?indentedSyntax&sourceMap&sourceMapContents') }, { test: /img\/.*\.(png|jpg|jpeg|gif|svg)(\?[a-z0-9-]+)?$/, loader: 'file-loader?name=' + opts.img }, { test: /font\/.*\.(ttf|eot|svg|woff(2)?)(\?[a-z0-9-]+)?$/, loader: 'file-loader?name=' + opts.font }, { test: /\.jade$/, loader: 'jade' } ], noParse: /\.min\.js/ }, postcss: function () { return [autoprefixer] }, resolve: { root: [opts.baseUrl], extensions: ['', '.js'] }, plugins: [ new webpack.DefinePlugin({ 'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV) }), new CopyWebpackPlugin([{ from: path.join(__dirname, 'src', 'static'), to: opts.build }]), new webpack.optimize.CommonsChunkPlugin('vendor', opts.vendor), new ExtractTextPlugin(opts.css, { allChunks: true }), new PathRewriterPlugin({ emitStats: false }), new HtmlWebpackPlugin({ filename: 'index.html', template: '../index.jade', git: git.short(), rev: (new Date()).toISOString() }) ] };