diff --git a/package.json b/package.json
index a0c699305e2bdd4c95a4d5ce0638d56e45744703..bf8c349381b8417584f19cd228227255b497d83d 100644
--- a/package.json
+++ b/package.json
@@ -15,9 +15,11 @@
     "lint-fix": "eslint ./**/*.{ts,tsx} --fix",
     "test": "npm run lint && jest",
     "build": "npm run build-tsc && npm run build-extra && npm run build-webpack",
+    "build-viewer": "npm run build-tsc && npm run build-extra && npm run build-webpack-viewer",
     "build-tsc": "tsc --incremental && tsc --build src/servers --incremental",
     "build-extra": "cpx \"src/**/*.{scss,html,ico}\" lib/",
-    "build-webpack": "webpack --mode production",
+    "build-webpack": "webpack --mode production --config ./webpack.config.production.js",
+    "build-webpack-viewer": "webpack --mode production --config ./webpack.config.viewer.js",
     "watch": "concurrently -c \"green,green,gray,gray\" --names \"tsc,srv,ext,wpc\" --kill-others \"npm:watch-tsc\" \"npm:watch-servers\" \"npm:watch-extra\" \"npm:watch-webpack\"",
     "watch-viewer": "concurrently -c \"green,gray,gray\" --names \"tsc,ext,wpc\" --kill-others \"npm:watch-tsc\" \"npm:watch-extra\" \"npm:watch-webpack-viewer\"",
     "watch-viewer-debug": "concurrently -c \"green,gray,gray\" --names \"tsc,ext,wpc\" --kill-others \"npm:watch-tsc\" \"npm:watch-extra\" \"npm:watch-webpack-viewer-debug\"",
diff --git a/webpack.config.production.js b/webpack.config.production.js
new file mode 100644
index 0000000000000000000000000000000000000000..c46bfcfd17919daac91cdd133ffc99c4a6826fee
--- /dev/null
+++ b/webpack.config.production.js
@@ -0,0 +1,9 @@
+const { createApp, createExample } = require('./webpack.config.common.js');
+
+const apps = ['viewer'];
+const examples = ['proteopedia-wrapper', 'basic-wrapper', 'lighting'];
+
+module.exports = [
+    ...apps.map(createApp),
+    ...examples.map(createExample)
+]
\ No newline at end of file