diff --git a/.gitignore b/.gitignore index f341aee4..972eac28 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,6 @@ .env node_modules/* !node_modules/boost -dist/ -compiled +/dist +/compiled /secret diff --git a/webpack-production.config.js b/webpack-production.config.js new file mode 100644 index 00000000..bda33a25 --- /dev/null +++ b/webpack-production.config.js @@ -0,0 +1,55 @@ +const skeleton = require('./webpack-skeleton') +const webpack = require('webpack') +const path = require('path') +const NodeTargetPlugin = require('webpack/lib/node/NodeTargetPlugin') + +var JsonpTemplatePlugin = webpack.JsonpTemplatePlugin +var FunctionModulePlugin = require('webpack/lib/FunctionModulePlugin') +var config = Object.assign({}, skeleton, { + module: { + loaders: [ + { + test: /(\.js|\.jsx)?$/, + exclude: /(node_modules|bower_components)/, + loader: 'babel' + }, + { + test: /\.styl?$/, + exclude: /(node_modules|bower_components)/, + loader: 'style-loader!css-loader!stylus-loader' + } + ] + }, + output: { + path: path.join(__dirname, 'compiled'), + filename: '[name].js', + libraryTarget: 'commonjs2', + sourceMapFilename: '[name].map', + publicPath: 'http://localhost:8080/assets/' + }, + plugins: [ + new webpack.NoErrorsPlugin(), + new NodeTargetPlugin(), + new webpack.optimize.OccurenceOrderPlugin(), + new webpack.DefinePlugin({ + 'process.env': { + 'NODE_ENV': JSON.stringify('production'), + 'BABEL_ENV': JSON.stringify('production') + } + }), + new webpack.optimize.UglifyJsPlugin({ + compressor: { + warnings: false + } + }) + ] +}) + +config.target = function renderer (compiler) { + compiler.apply( + new JsonpTemplatePlugin(config.output), + new FunctionModulePlugin(config.output) + ) +} + +module.exports = config diff --git a/webpack-skeleton.js b/webpack-skeleton.js new file mode 100644 index 00000000..437aa527 --- /dev/null +++ b/webpack-skeleton.js @@ -0,0 +1,37 @@ +const webpack = require('webpack') +const path = require('path') +const NodeTargetPlugin = require('webpack/lib/node/NodeTargetPlugin') + +var config = { + entry: { + main: './browser/main/index.js', + finder: './browser/finder/index.js' + }, + resolve: { + extensions: ['', '.js', '.jsx'], + packageMains: ['webpack', 'browser', 'web', 'browserify', ['jam', 'main'], 'main'], + alias: { + 'boost': path.resolve(__dirname, 'lib') + } + }, + plugins: [ + new webpack.NoErrorsPlugin(), + new NodeTargetPlugin() + ], + externals: [ + 'electron', + 'socket.io-client', + 'md5', + 'superagent', + 'superagent-promise', + 'lodash', + 'markdown-it', + 'moment', + 'highlight.js', + 'markdown-it-emoji', + 'fs-jetpack' + ] +} + +module.exports = config +