diff -r f07ea3369377 -r e435cad79dfe src_js/iconolab-bundle/webpack.config.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src_js/iconolab-bundle/webpack.config.js Thu Feb 23 12:06:57 2017 +0100 @@ -0,0 +1,111 @@ +var path = require('path') +var webpack = require('webpack') +var ExtractTextPlugin = require("extract-text-webpack-plugin") +var projectRoot = path.resolve(__dirname) + +module.exports = { + entry: { + vendor: [ + 'jquery', + 'bootstrap', + ], + iconolab: [ + './src/main.js', + './src/main.scss', + ] + }, + output: { + path: __dirname + '/../../src/iconolab/static', + publicPath: '/static/', + filename: 'iconolab/js/[name].js' + }, + module: { + loaders: [ + { + test: /\.vue$/, + loader: 'vue' + }, + { + test: /\.css$/, + loader: ExtractTextPlugin.extract("style-loader", "css-loader?modules&localIdentName=[local]"), + include: [ + __dirname + '/src', + /node_modules/ + ] + }, + { + test: /\.scss$/, + loader: ExtractTextPlugin.extract("style-loader", "css-loader?modules&importLoaders=1&localIdentName=[local]!resolve-url-loader!postcss-loader!sass-loader"), + include: [ + __dirname + '/src', + /node_modules/ + ] + }, + { + test: /\.js$/, + loader: 'babel-loader', + exclude: /node_modules/, + include: [ + path.join(projectRoot, 'src') + ], + query: { + presets: ['es2015'] + }, + "plugins": ["transform-es2015-shorthand-properties"] + }, + { + test: /\.(png|jpg|gif|svg)$/, + loader: 'file', + query: { + name: '[name].[ext]?[hash]' + } + }, + { + test: /\.(ttf|eot|svg|woff|woff2)(\?v=[0-9]\.[0-9]\.[0-9])?$/, + loader: 'file-loader?name=iconolab/fonts/[name].[ext]' + }, + { + test: require.resolve('snapsvg'), + loader: 'imports-loader?this=>window,fix=>module.exports=0' + }, + ] + }, + plugins: [ + new webpack.optimize.CommonsChunkPlugin({ + name: 'vendor' + }), + new ExtractTextPlugin("iconolab/css/[name].css"), + new webpack.ProvidePlugin({ + $: "jquery", + jQuery: "jquery" + }) + ], + devServer: { + port: 8001, + contentBase: __dirname + '/../../src/iconolab', + publicPath: '/static/', + stats: 'minimal', + compress: true, + headers: { 'Access-Control-Allow-Origin': '*' }, + historyApiFallback: true, + }, + devtool: '#source-map' +} + +if (process.env.NODE_ENV === 'production') { + module.exports.devtool = '#source-map' + // http://vue-loader.vuejs.org/en/workflow/production.html + module.exports.plugins = (module.exports.plugins || []).concat([ + new webpack.DefinePlugin({ + 'process.env': { + NODE_ENV: '"production"' + } + }), + new webpack.optimize.UglifyJsPlugin({ + compress: { + warnings: false + } + }), + new webpack.optimize.OccurenceOrderPlugin() + ]) +}