From 96fe5900388c027c9dbeeb7362aad8ce5275e27d Mon Sep 17 00:00:00 2001 From: Todd Dembrey <todd.dembrey@torchbox.com> Date: Fri, 21 Dec 2018 16:45:56 +0000 Subject: [PATCH] Allow for deployment --- gulpfile.js | 13 +++++++++--- opentech/settings/base.py | 7 +++++++ opentech/settings/dev.py | 8 ------- opentech/settings/production.py | 3 +++ .../static_src/src/app/webpack.dev.config.js | 2 +- .../prod.config.js => webpack.prod.config.js} | 21 ++++++------------- 6 files changed, 27 insertions(+), 27 deletions(-) rename opentech/static_src/src/app/{webpack/prod.config.js => webpack.prod.config.js} (51%) diff --git a/gulpfile.js b/gulpfile.js index 358058d88..2bffc4124 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -166,7 +166,14 @@ gulp.task('scripts:production', gulp.series('clean:js', function js () { // Build App. gulp.task('app', function() { return gulp.src(options.theme.app + 'src/') - .pipe(webpack( require(options.theme.app + 'webpack/dev.config.js') )) + .pipe(webpack( require(options.theme.app + 'webpack.dev.config.js') )) + .pipe(gulp.dest(options.theme.app_dest)); +}) + +// Build Prod App +gulp.task('app:production', function() { + return gulp.src(options.theme.app + 'src/') + .pipe(webpack( require(options.theme.app + 'webpack.prod.config.js') )) .pipe(gulp.dest(options.theme.app_dest)); }) @@ -221,10 +228,10 @@ gulp.task('watch:static', function watch () { gulp.task('watch', gulp.parallel('watch:css', 'watch:lint:sass', 'watch:js', 'watch:lint:js', 'watch:images', 'watch:fonts', 'watch:static')); // Build everything. -gulp.task('build', gulp.series(gulp.parallel('styles:production', 'scripts:production', 'images', 'fonts', 'lint'), 'collectstatic')); +gulp.task('build', gulp.series(gulp.parallel('styles:production', 'scripts:production', 'app:production', 'images', 'fonts', 'lint'), 'collectstatic')); // Deploy everything. -gulp.task('deploy', gulp.parallel('styles:production', 'scripts:production', 'images', 'fonts')); +gulp.task('deploy', gulp.parallel('styles:production', 'scripts:production', 'app:production', 'images', 'fonts')); // The default task. gulp.task('default', gulp.series('build')); diff --git a/opentech/settings/base.py b/opentech/settings/base.py index 6986d6a9b..492157071 100644 --- a/opentech/settings/base.py +++ b/opentech/settings/base.py @@ -592,3 +592,10 @@ if env.get('SECURE_CONTENT_TYPE_NOSNIFF', 'true').lower().strip() == 'true': REFERRER_POLICY = env.get('SECURE_REFERRER_POLICY', 'no-referrer-when-downgrade').strip() + +WEBPACK_LOADER = { + 'DEFAULT': { + 'BUNDLE_DIR_NAME': 'app/', + 'STATS_FILE': os.path.join(BASE_DIR, './opentech/static_compiled/app/webpack-stats.json'), + } +} diff --git a/opentech/settings/dev.py b/opentech/settings/dev.py index 1313d7fe3..176f00d6d 100644 --- a/opentech/settings/dev.py +++ b/opentech/settings/dev.py @@ -109,11 +109,3 @@ if DEBUGTOOLBAR: MIDDLEWARE = [ 'debug_toolbar.middleware.DebugToolbarMiddleware', ] + MIDDLEWARE - - -WEBPACK_LOADER = { - 'DEFAULT': { - 'BUNDLE_DIR_NAME': 'app/', - 'STATS_FILE': os.path.join(BASE_DIR, './opentech/static_src/src/app/webpack-stats.json'), - } -} diff --git a/opentech/settings/production.py b/opentech/settings/production.py index c4a21eedd..b9e649beb 100644 --- a/opentech/settings/production.py +++ b/opentech/settings/production.py @@ -21,5 +21,8 @@ if 'MAILGUN_API_KEY' in env: "WEBHOOK_SECRET": env.get('ANYMAIL_WEBHOOK_SECRET', None) } +WEBPACK_LOADER['DEFAULT'].update({ + 'STATS_FILE': os.path.join(BASE_DIR, './opentech/static_compiled/app/webpack-stats-prod.json'), +}) django_heroku.settings(locals()) diff --git a/opentech/static_src/src/app/webpack.dev.config.js b/opentech/static_src/src/app/webpack.dev.config.js index 29349fe9f..ce97aee7d 100644 --- a/opentech/static_src/src/app/webpack.dev.config.js +++ b/opentech/static_src/src/app/webpack.dev.config.js @@ -11,7 +11,7 @@ config.output.publicPath = 'http://localhost:3000/app/' config.plugins = config.plugins.concat([ new webpack.HotModuleReplacementPlugin(), new webpack.NoEmitOnErrorsPlugin(), - new BundleTracker({filename: './webpack-stats.json'}), + new BundleTracker({filename: './opentech/static_compiled/app/webpack-stats.json'}), ]) // Add a loader for JSX files with react-hot enabled diff --git a/opentech/static_src/src/app/webpack/prod.config.js b/opentech/static_src/src/app/webpack.prod.config.js similarity index 51% rename from opentech/static_src/src/app/webpack/prod.config.js rename to opentech/static_src/src/app/webpack.prod.config.js index 5fdcde239..9b0ff64ac 100644 --- a/opentech/static_src/src/app/webpack/prod.config.js +++ b/opentech/static_src/src/app/webpack.prod.config.js @@ -6,28 +6,19 @@ var config = require('./webpack.base.config.js') config.output.path = require('path').resolve('./assets/dist') config.plugins = config.plugins.concat([ - new BundleTracker({filename: './webpack-stats-prod.json'}), + new BundleTracker({filename: './opentech/static_compiled/app/webpack-stats-prod.json'}), // removes a lot of debugging code in React new webpack.DefinePlugin({ 'process.env': { 'NODE_ENV': JSON.stringify('production') }}), - - // keeps hashes consistent between compilations - new webpack.optimize.OccurenceOrderPlugin(), - - // minifies your code - new webpack.optimize.UglifyJsPlugin({ - compressor: { - warnings: false - } - }) ]) -// Add a loader for JSX files -config.module.loaders.push( - { test: /\.jsx?$/, exclude: /node_modules/, loader: 'babel' } -) +config.optimization = { + minimize: true +} + +config.mode = "production" module.exports = config -- GitLab