From a923a684b042416b3f1de9e477b794ca9c6bc912 Mon Sep 17 00:00:00 2001 From: Winnie Hellmann Date: Wed, 13 Mar 2019 12:58:48 +0100 Subject: Resolve differences in Webpack config between CE and EE --- config/webpack.config.js | 52 ++++++++++++++++++++++++++++++++++++------------ 1 file changed, 39 insertions(+), 13 deletions(-) (limited to 'config/webpack.config.js') diff --git a/config/webpack.config.js b/config/webpack.config.js index 11970b620bc..55122e341c3 100644 --- a/config/webpack.config.js +++ b/config/webpack.config.js @@ -1,3 +1,4 @@ +const fs = require('fs'); const path = require('path'); const glob = require('glob'); const webpack = require('webpack'); @@ -11,6 +12,10 @@ const ROOT_PATH = path.resolve(__dirname, '..'); const CACHE_PATH = process.env.WEBPACK_CACHE_PATH || path.join(ROOT_PATH, 'tmp/cache'); const IS_PRODUCTION = process.env.NODE_ENV === 'production'; const IS_DEV_SERVER = process.argv.join(' ').indexOf('webpack-dev-server') !== -1; +const IS_EE = + process.env.EE !== undefined + ? JSON.parse(process.env.EE) + : fs.existsSync(path.join(ROOT_PATH, 'ee')); const DEV_SERVER_HOST = process.env.DEV_SERVER_HOST || 'localhost'; const DEV_SERVER_PORT = parseInt(process.env.DEV_SERVER_PORT, 10) || 3808; const DEV_SERVER_LIVERELOAD = IS_DEV_SERVER && process.env.DEV_SERVER_LIVERELOAD !== 'false'; @@ -44,6 +49,14 @@ function generateEntries() { pageEntries.forEach(path => generateAutoEntries(path)); + if (IS_EE) { + const eePageEntries = glob.sync('pages/**/index.js', { + cwd: path.join(ROOT_PATH, 'ee/app/assets/javascripts'), + }); + eePageEntries.forEach(path => generateAutoEntries(path, 'ee')); + watchAutoEntries.push(path.join(ROOT_PATH, 'ee/app/assets/javascripts/pages/')); + } + const autoEntryKeys = Object.keys(autoEntriesMap); autoEntriesCount = autoEntryKeys.length; @@ -68,6 +81,31 @@ function generateEntries() { return Object.assign(manualEntries, autoEntries); } +const alias = { + '~': path.join(ROOT_PATH, 'app/assets/javascripts'), + emojis: path.join(ROOT_PATH, 'fixtures/emojis'), + empty_states: path.join(ROOT_PATH, 'app/views/shared/empty_states'), + icons: path.join(ROOT_PATH, 'app/views/shared/icons'), + images: path.join(ROOT_PATH, 'app/assets/images'), + vendor: path.join(ROOT_PATH, 'vendor/assets/javascripts'), + vue$: 'vue/dist/vue.esm.js', + spec: path.join(ROOT_PATH, 'spec/javascripts'), + + // the following resolves files which are different between CE and EE + ee_else_ce: path.join(ROOT_PATH, 'app/assets/javascripts'), +}; + +if (IS_EE) { + Object.assign(alias, { + ee: path.join(ROOT_PATH, 'ee/app/assets/javascripts'), + ee_empty_states: path.join(ROOT_PATH, 'ee/app/views/shared/empty_states'), + ee_icons: path.join(ROOT_PATH, 'ee/app/views/shared/icons'), + ee_images: path.join(ROOT_PATH, 'ee/app/assets/images'), + ee_spec: path.join(ROOT_PATH, 'ee/spec/javascripts'), + ee_else_ce: path.join(ROOT_PATH, 'ee/app/assets/javascripts'), + }); +} + module.exports = { mode: IS_PRODUCTION ? 'production' : 'development', @@ -85,19 +123,7 @@ module.exports = { resolve: { extensions: ['.js', '.gql', '.graphql'], - alias: { - '~': path.join(ROOT_PATH, 'app/assets/javascripts'), - emojis: path.join(ROOT_PATH, 'fixtures/emojis'), - empty_states: path.join(ROOT_PATH, 'app/views/shared/empty_states'), - icons: path.join(ROOT_PATH, 'app/views/shared/icons'), - images: path.join(ROOT_PATH, 'app/assets/images'), - vendor: path.join(ROOT_PATH, 'vendor/assets/javascripts'), - vue$: 'vue/dist/vue.esm.js', - spec: path.join(ROOT_PATH, 'spec/javascripts'), - - // the following resolves files which are different between CE and EE - ee_else_ce: path.join(ROOT_PATH, 'app/assets/javascripts'), - }, + alias, }, module: { -- cgit v1.2.3