UNPKG

monaca-lib

Version:

Monaca cloud and localkit API bindings for JavaScript

159 lines (138 loc) 3.83 kB
try { var path = require('path'); var webpack = require('webpack'); var HtmlWebpackPlugin = require('html-webpack-plugin'); var ExtractTextPlugin = require('extract-text-webpack-plugin'); var CopyWebpackPlugin = require('copy-webpack-plugin'); var ProgressBarPlugin = require('progress-bar-webpack-plugin'); var cssnext = require('postcss-cssnext'); var postcssImport = require('postcss-import'); var postcssUrl = require('postcss-url'); } catch (e) { throw new Error('Missing Webpack Build Dependencies.'); } var useCache = !!process.env.WP_CACHE; module.exports = { context: __dirname, cache: useCache, stats: { warnings: false, children: false }, entry: { 'polyfills': './src/polyfills', 'vendor': './src/vendor', 'app': './src/main' }, output: { path: path.join(__dirname, 'www'), filename: '[name].bundle.js', chunkFilename: '[id].chunk.js' }, resolve: { root: [ path.join(__dirname, 'src'), path.join(__dirname, 'node_modules') ], extensions: ['', '.ts', '.js', '.json', '.css', '.html', '.styl'], unsafeCache: useCache }, module: { loaders: [{ test: /\.ts$/, loader: 'ts', include: path.join(__dirname, 'src'), query: { presets: [ 'babel-preset-es2015', 'babel-preset-stage-2' ], cacheDirectory: useCache } }, { test: /\.html$/, loader: 'html' }, { test: /\.(png|jpe?g|gif|svg|woff|woff2|ttf|eot|ico)(\?\S*)?$/, loader: 'file?name=assets/[name].[hash].[ext]' }, { test: /\.css$/, include: [ path.join(__dirname, 'node_modules', 'onsenui', 'css-components-src', 'src'), path.join(__dirname, 'src') ], loaders: ['css-to-string', ExtractTextPlugin.extract('style', 'css?importLoaders=1&-raw!postcss')] }, { test: /\.css$/, exclude: [ path.join(__dirname, 'node_modules', 'onsenui', 'css-components-src', 'src'), path.join(__dirname, 'src') ], loader: ExtractTextPlugin.extract('style', 'css?sourceMap') }, { test: /\.json$/, loader: 'json' }], noParse: [/.+zone\.js\/dist\/.+/, /.+angular2\/bundles\/.+/, /angular2-polyfills\.js/] }, htmlLoader: { minimize: true, removeAttributeQuotes: false, caseSensitive: true, customAttrSurround: [[/#/, /(?:)/], [/\*/, /(?:)/], [/\[?\(?/, /(?:)/]], customAttrAssign: [/\)?\]?=/] }, postcss: function() { return [ postcssImport, postcssUrl, cssnext({ browsers: ['> 1%', 'last 2 versions', 'Firefox ESR', 'Opera 12.1'] }) ] }, ts: { compilerOptions: { sourceMap: false, sourceRoot: './src', inlineSourceMap: true } }, plugins: [ new webpack.DefinePlugin({ 'process.env': { 'NODE_ENV': JSON.stringify('production') } }), new ExtractTextPlugin('[name].css'), new webpack.optimize.CommonsChunkPlugin({ name: ['app', 'vendor', 'polyfills'] }), new HtmlWebpackPlugin({ template: 'src/public/index.html.ejs', chunksSortMode: 'dependency', externalCSS: ['components/loader.css'], externalJS: ['components/loader.js'], minify: { caseSensitive: true, collapseWhitespace: true, conservativeCollapse: true, removeAttributeQuotes: false, removeComments: true } }), new webpack.NoErrorsPlugin(), new webpack.optimize.DedupePlugin(), new webpack.optimize.UglifyJsPlugin(), new CopyWebpackPlugin([{ from: path.join(__dirname, 'src', 'public'), ignore: ['index.html.ejs'] }]), new ProgressBarPlugin() ], resolveLoader: { root: [ path.join(__dirname, 'node_modules') ] } };