added server and client production build scripts

This commit is contained in:
bill bittner 2018-03-19 18:28:36 -07:00
parent 348bedfb55
commit 9a947f7bf8
5 changed files with 48 additions and 6 deletions

View file

@ -43,7 +43,7 @@ Spee.ch is a web app that reads and publishes images and videos to and from the
* webpack * webpack
* During the build process, webpack creates two bundles for this project: * During the build process, webpack creates two bundles for this project:
* (1) a client-side app bundle which will be located at `public/bundle/bundle.js` * (1) a client-side app bundle which will be located at `public/bundle/bundle.js`
* (2) a server bundle which will be located at `server/index.js` * (2) a server bundle which will be located at `index.js`
* configuration * configuration
* the `config/` folder contains all of the required config files. The project contains `.example` files which can be copied to create the necessary `.js` files * the `config/` folder contains all of the required config files. The project contains `.example` files which can be copied to create the necessary `.js` files
* the `devConfig/` folder contains optional config files. Updating these files is not necessary. If you update these files, make sure to add them to your `.gitignore` file so they are not included in source control. * the `devConfig/` folder contains optional config files. Updating these files is not necessary. If you update these files, make sure to add them to your `.gitignore` file so they are not included in source control.

View file

@ -6,8 +6,8 @@
"scripts": { "scripts": {
"test": "mocha --recursive", "test": "mocha --recursive",
"test-all": "mocha --recursive", "test-all": "mocha --recursive",
"start": "node server/index.js", "start": "node index.js",
"start-dev": "nodemon server/index.js", "start-dev": "nodemon index.js",
"lint": "eslint .", "lint": "eslint .",
"fix": "eslint . --fix", "fix": "eslint . --fix",
"precommit": "eslint .", "precommit": "eslint .",
@ -15,7 +15,9 @@
"build-dev": "webpack --config webpack.dev.js", "build-dev": "webpack --config webpack.dev.js",
"build-dev-client": "webpack --config webpack.dev.client.js", "build-dev-client": "webpack --config webpack.dev.client.js",
"build-dev-server": "webpack --config webpack.dev.server.js", "build-dev-server": "webpack --config webpack.dev.server.js",
"build": "webpack --config webpack.prod.js" "build": "webpack --config webpack.prod.js",
"build-client": "webpack --config webpack.prod.client.js",
"build-server": "webpack --config webpack.prod.server.js"
}, },
"repository": { "repository": {
"type": "git", "type": "git",

20
webpack.prod.client.js Normal file
View file

@ -0,0 +1,20 @@
const webpack = require('webpack');
const merge = require('webpack-merge');
const UglifyJSPlugin = require('uglifyjs-webpack-plugin');
const clientBaseConfig = require('./webpack.client.common.js');
const productionBuildConfig = {
devtool: 'source-map',
plugins: [
new UglifyJSPlugin({
sourceMap: true,
}),
new webpack.DefinePlugin({
'process.env.NODE_ENV': JSON.stringify('production'),
}),
],
};
module.exports = [
merge(clientBaseConfig, productionBuildConfig),
];

20
webpack.prod.server.js Normal file
View file

@ -0,0 +1,20 @@
const webpack = require('webpack');
const merge = require('webpack-merge');
const UglifyJSPlugin = require('uglifyjs-webpack-plugin');
const serverBaseConfig = require('./webpack.server.common.js');
const productionBuildConfig = {
devtool: 'source-map',
plugins: [
new UglifyJSPlugin({
sourceMap: true,
}),
new webpack.DefinePlugin({
'process.env.NODE_ENV': JSON.stringify('production'),
}),
],
};
module.exports = [
merge(serverBaseConfig, productionBuildConfig),
];

View file

@ -10,8 +10,8 @@ module.exports = {
externals: [nodeExternals()], externals: [nodeExternals()],
entry : ['babel-polyfill', 'whatwg-fetch', './server/server.js'], entry : ['babel-polyfill', 'whatwg-fetch', './server/server.js'],
output : { output : {
path : Path.join(__dirname, 'server/'), path : Path.join(__dirname, '/'),
publicPath : 'server/', publicPath : '/',
filename : 'index.js', filename : 'index.js',
library : '', library : '',
libraryTarget: 'commonjs-module', libraryTarget: 'commonjs-module',