Explorar o código

WIP: constructing webpack.common.config.js

Yuki Takei %!s(int64=9) %!d(string=hai) anos
pai
achega
750ea3d040

+ 15 - 0
config/helpers.js

@@ -0,0 +1,15 @@
+var path = require('path');
+
+const EVENT = process.env.npm_lifecycle_event || '';
+
+// Helper functions
+var ROOT = path.resolve(__dirname, '..');
+
+function hasProcessFlag(flag) {
+  return process.argv.join('').indexOf(flag) > -1;
+}
+
+var root = path.join.bind(path, ROOT);
+
+exports.hasProcessFlag = hasProcessFlag;
+exports.root = root;

+ 53 - 0
config/webpack.common.config.js

@@ -0,0 +1,53 @@
+const webpack = require('webpack');
+const helpers = require('./helpers');
+
+/*
+ * Webpack Plugins
+ */
+// problem with copy-webpack-plugin
+const AssetsPlugin = require('assets-webpack-plugin');
+const CommonsChunkPlugin = require('webpack/lib/optimize/CommonsChunkPlugin');
+const CopyWebpackPlugin = require('copy-webpack-plugin');
+const HtmlWebpackPlugin = require('html-webpack-plugin');
+const LoaderOptionsPlugin = require('webpack/lib/LoaderOptionsPlugin');
+const ScriptExtHtmlWebpackPlugin = require('script-ext-html-webpack-plugin');
+
+/*
+ * Webpack Constants
+ */
+const HMR = helpers.hasProcessFlag('hot');
+
+/*
+ * Webpack configuration
+ *
+ * See: http://webpack.github.io/docs/configuration.html#cli
+ */
+module.exports = function (options) {
+  isProd = options.env === 'production';
+  return {
+    entry: {
+      'app':           './resource/js/app.js',
+      'crowi-legacy':  './resource/js/legacy/crowi.js',
+      'presentation':  './resource/js/crowi-presentation.js',
+    },
+    resolve: {
+      modules: [
+        './node_modules', './resource/thirdparty-js',
+      ],
+    },
+    module: {
+      rules: [
+        {
+          test: /.jsx?$/,
+          exclude: /node_modules/,
+          use: [{
+            loader: 'babel-loader',
+          }]
+        }
+      ]
+    },
+    plugins: []
+  }
+}
+
+module.exports = config;

+ 0 - 55
config/webpack.config.js

@@ -1,55 +0,0 @@
-var path = require('path');
-var webpack = require('webpack');
-var UglifyJsPlugin = require('webpack/lib/optimize/UglifyJsPlugin');
-
-var ManifestPlugin = require('webpack-manifest-plugin');
-
-var config = {
-  entry: {
-    app:          './resource/js/app.js',
-    crowi:        './resource/js/crowi.js',
-    presentation: './resource/js/crowi-presentation.js',
-    form:         './resource/js/crowi-form.js',
-    admin:        './resource/js/crowi-admin.js',
-  },
-  output: {
-    path: path.join(__dirname + "/public/js"),
-    filename: "[name].[hash].js"
-  },
-  resolve: {
-    modules: [
-      './node_modules', './resource/thirdparty-js',
-    ],
-  },
-  module: {
-    rules: [
-      {
-        test: /.jsx?$/,
-        exclude: /node_modules/,
-        use: [{
-          loader: 'babel-loader',
-        }]
-      }
-    ]
-  },
-  plugins: []
-};
-
-if (process.env && process.env.NODE_ENV !== 'development') {
-  config.plugins = [
-    new webpack.DefinePlugin({
-      'process.env':{
-        'NODE_ENV': JSON.stringify('production')
-      }
-    }),
-    new UglifyJsPlugin({
-      compress:{
-        warnings: false
-      }
-    }),
-  ];
-}
-
-config.plugins.push(new ManifestPlugin());
-
-module.exports = config;

+ 0 - 0
resource/js/crowi-admin.js → resource/js/legacy/crowi-admin.js


+ 0 - 0
resource/js/crowi-form.js → resource/js/legacy/crowi-form.js


+ 0 - 0
resource/js/crowi-presentation.js → resource/js/legacy/crowi-presentation.js


+ 0 - 0
resource/js/crowi.js → resource/js/legacy/crowi.js


+ 3 - 0
resource/js/legacy/index.js

@@ -0,0 +1,3 @@
+require('./crowi.js')
+require('./crowi-form.js')
+require('./crowi-admin.js')

+ 15 - 0
webpack.config.js

@@ -0,0 +1,15 @@
+// Look in ./config folder for webpack.dev.js
+switch (process.env.NODE_ENV) {
+  case 'prod':
+  case 'production':
+    module.exports = require('./config/webpack.prod')({env: 'production'});
+    break;
+  case 'test':
+  case 'testing':
+    module.exports = require('./config/webpack.test')({env: 'test'});
+    break;
+  case 'dev':
+  case 'development':
+  default:
+    module.exports = require('./config/webpack.dev')({env: 'development'});
+}