evolve-js
Version:
EvolveJS An Elements framework built over CreateJS
145 lines (133 loc) • 4.08 kB
JavaScript
const path = require('path');
const webpack = require('webpack');
const packageJSON = require('./package.json');
const CleanWebpackPlugin = require('clean-webpack-plugin');
const release = require('./release.js');
module.exports = {
context: path.resolve('src'),
devtool: 'source-map',
debug: true,
entry: {
app: './index.js',
},
loader: {
appSettings: {
env: 'development' // string, default to 'development'
}
},
output: {
path: path.join(__dirname, 'dist'),
filename: './evolve.js',
library: 'evolve-js',
libraryTarget: 'umd',
},
plugins: [
new CleanWebpackPlugin(['dist', 'build']),
new webpack.ProvidePlugin({
ƒ: 'flavor-js',
'create-es6-js': 'create-es6-js',
}),
new webpack.optimize.OccurrenceOrderPlugin(),
new webpack.DefinePlugin({ //<--key to reduce React's size
'process.env': {
'NODE_ENV': JSON.stringify('production')
}
}),
new webpack.optimize.DedupePlugin(),
// Uglify debug
new webpack.optimize.UglifyJsPlugin({
mangle: false,
minimize: false,
sourceMap: true,
compress: false,
output: {
comments: true,
},
}),
// new webpack.optimize.UglifyJsPlugin({
// mangle: {
// toplevel: false,
// screw_ie8: true,
// },
// minimize: true,
// sourceMap: true,
// compress: {
// negate_iife: true,
// sequences: true, // join consecutive statemets with the “comma operator”
// properties: true, // optimize property access: a["foo"] → a.foo
// drop_console: true,
// dead_code: true, // discard unreachable code
// drop_debugger: true, // discard “debugger” statements
// unsafe: true, // some unsafe optimizations (see below)
// conditionals: true, // optimize if-s and conditional expressions
// comparisons: true, // optimize comparisons
// evaluate: true, // evaluate constant expressions
// booleans: true, // optimize boolean expressions
// loops: true, // optimize loops
// unused: true, // drop unused variables/functions
// hoist_funs: true, // hoist function declarations
// hoist_vars: true, // hoist variable declarations
// if_return: true, // optimize if-s followed by return/continue
// join_vars: true, // join var declarations
// cascade: true, // try to cascade `right` into `left` in sequences
// side_effects: true, // drop side-effect-free statements
// warnings: false, // warn about potentially dangerous optimizations/code
// global_defs: {} // global definitions
// },
// output: {
// comments: false
// },
// }),
new webpack.optimize.AggressiveMergingPlugin({
minSizeReduce: 2,
moveToParents: true,
entryChunkMultiplicator: 20
}),
],
module: {
preLoaders: [{
test: /\.js$/,
loader: 'eslint-loader',
exclude: /node_modules|bower_components/,
}],
loaders: [{
test: /\.js$/,
exclude: /node_modules|bower_components/,
loader: 'babel-loader',
'query': {
'presets': [['env', {
'modules': false,
'targets': {'node': 4}
}]]
}
}],
},
externals: [
{
// We're not only webpack that lodash should be an
// external dependency, but we're also specifying how
// lodash should be loaded in different scenarios
// (more on that below)
'flavor-js': {
root: "ƒ",
commonjs: "flavor-js",
commonjs2: "flavor-js",
amd: "flavor-js"
},
'create-es6-js': {
root: "create-es6-js",
commonjs: "create-es6-js",
commonjs2: "create-es6-js",
amd: "create-es6-js"
}
}
],
resolve: {
root: path.resolve(__dirname),
extensions: ['', '.js'],
modulesDirectories: ['node_modules', 'bower_components'],
},
eslint: {
configFile: '.eslintrc',
},
};