From caa48777484cf2707af2df2d3e628a9a93766277 Mon Sep 17 00:00:00 2001 From: Alf Eaton <eaton.alf@gmail.com> Date: Fri, 8 Sep 2017 09:13:57 +0100 Subject: [PATCH] Standardise webpack configs Move webpack configs to a single location, in xpub-styleguide. Use localIdentName to add module and original class names to the class name. --- .../styleguide.config.js | 1 - .../webpack.config.js | 110 +--------------- .../component-dashboard/styleguide.config.js | 1 - .../component-dashboard/webpack.config.js | 98 +-------------- .../component-manuscript/webpack.config.js | 4 +- .../component-review/styleguide.config.js | 1 - packages/component-review/webpack.config.js | 113 +---------------- .../component-submit/styleguide.config.js | 1 - packages/component-submit/webpack.config.js | 113 +---------------- packages/xpub-edit/styleguide.config.js | 1 - packages/xpub-edit/webpack.config.js | 89 +------------ .../xpub-styleguide/src/webpack-config.js | 119 ++++++++++++++++++ packages/xpub-styleguide/webpack.config.js | 77 +----------- packages/xpub-ui/styleguide.config.js | 1 - packages/xpub-ui/webpack.config.js | 113 +---------------- 15 files changed, 136 insertions(+), 706 deletions(-) create mode 100644 packages/xpub-styleguide/src/webpack-config.js diff --git a/packages/component-authentication/styleguide.config.js b/packages/component-authentication/styleguide.config.js index ecdb784f1..79f3ea499 100644 --- a/packages/component-authentication/styleguide.config.js +++ b/packages/component-authentication/styleguide.config.js @@ -5,7 +5,6 @@ module.exports = { Wrapper: require.resolve('xpub-styleguide/src/components/Wrapper') }, skipComponentsWithoutExample: true, - webpackConfig: require('./webpack.config.js'), serverPort: 6061, theme: { fontFamily: { diff --git a/packages/component-authentication/webpack.config.js b/packages/component-authentication/webpack.config.js index 1f35cccb8..4aa149ad2 100644 --- a/packages/component-authentication/webpack.config.js +++ b/packages/component-authentication/webpack.config.js @@ -1,109 +1,3 @@ -process.env.BABEL_ENV = 'development' -process.env.NODE_ENV = 'development' +const webpackConfig = require('xpub-styleguide/src/webpack-config') -const path = require('path') -const nodeExternals = require('webpack-node-externals') - -const include = [ - path.join(__dirname, 'src'), - /xpub-[^/]+\/src/, -] - -module.exports = { - entry: './src/index.js', - output: { - filename: 'index.js', - path: path.join(__dirname, 'dist') - }, - devtool: 'cheap-module-source-map', - externals: [nodeExternals({ - whitelist: [/\.(?!js$).{1,5}$/i] - })], - resolve: { - symlinks: false - }, - module: { - rules: [ - { - oneOf: [ - // ES6 modules - { - test: /\.js$/, - include, - loader: 'babel-loader', - options: { - presets: [ - ['env', { - modules: false, - }], - 'react', - 'stage-2' - ], - cacheDirectory: true, - }, - }, - - // CSS modules - { - test: /\.local\.css$/, - include, - use: [ - 'style-loader', - { - loader: 'css-loader', - options: { - modules: true, - } - } - ], - }, - - // SCSS modules - { - test: /\.local\.scss$/, - include, - use: [ - 'style-loader', - { - loader: 'css-loader', - options: { - modules: true, - importLoaders: 1 - } - }, - 'sass-loader' - ], - }, - - // global CSS - { - test: /\.css$/, - use: [ - 'style-loader', - 'css-loader' - ], - }, - - // global SCSS - { - test: /\.scss$/, - use: [ - 'style-loader', - 'css-loader', - 'sass-loader' - ], - }, - - // Files - { - exclude: [/\.js$/, /\.html$/, /\.json$/], - loader: 'file-loader', - options: { - name: 'static/media/[name].[hash:8].[ext]', - } - } - ] - } - ] - } -} +module.exports = webpackConfig(__dirname) diff --git a/packages/component-dashboard/styleguide.config.js b/packages/component-dashboard/styleguide.config.js index 992a051d7..9b69f1042 100644 --- a/packages/component-dashboard/styleguide.config.js +++ b/packages/component-dashboard/styleguide.config.js @@ -8,7 +8,6 @@ module.exports = { faker: 'faker' }, skipComponentsWithoutExample: true, - webpackConfig: require('./webpack.config.js'), serverPort: 6062, theme: { fontFamily: { diff --git a/packages/component-dashboard/webpack.config.js b/packages/component-dashboard/webpack.config.js index f0a5dd998..4aa149ad2 100644 --- a/packages/component-dashboard/webpack.config.js +++ b/packages/component-dashboard/webpack.config.js @@ -1,97 +1,3 @@ -process.env.BABEL_ENV = 'development' -process.env.NODE_ENV = 'development' +const webpackConfig = require('xpub-styleguide/src/webpack-config') -const path = require('path') -const webpack = require('webpack') -const nodeExternals = require('webpack-node-externals') - -const include = [ - path.join(__dirname, 'src'), - /pubsweet-[^/]+\/src/, - /xpub-[^/]+\/src/, -] - -module.exports = { - entry: './src/index.js', - output: { - filename: 'index.js', - path: path.join(__dirname, 'dist'), - }, - devtool: 'cheap-module-source-map', - externals: [nodeExternals({ - whitelist: [/\.(?!js$).{1,5}$/i] - })], - resolve: { - symlinks: false - }, - // plugins: [ - // new webpack.ProvidePlugin({ - // CONFIG: { - // 'pubsweet-server': {} - // } - // }), - // ], - module: { - rules: [ - { - oneOf: [ - // ES6 modules - { - test: /\.js$/, - include, - loader: 'babel-loader', - options: { - presets: [ - ['env', { modules: false }], - 'react', - 'stage-2' - ], - cacheDirectory: true, - }, - }, - - // CSS modules - { - test: /\.local\.css$/, - include, - use: [ - 'style-loader', - { - loader: 'css-loader', - options: { - modules: true, - } - } - ], - }, - - // SCSS modules - { - test: /\.local\.scss$/, - include, - use: [ - 'style-loader', - { - loader: 'css-loader', - options: { - modules: true, - importLoaders: 1 - } - }, - 'sass-loader' - ], - }, - - // Files - { - exclude: [/\.js$/, /\.html$/, /\.json$/], - loader: 'file-loader', - options: { - name: 'static/media/[name].[hash:8].[ext]', - } - } - ] - } - ] - } -} +module.exports = webpackConfig(__dirname) diff --git a/packages/component-manuscript/webpack.config.js b/packages/component-manuscript/webpack.config.js index 36de5c3d5..b3020046e 100644 --- a/packages/component-manuscript/webpack.config.js +++ b/packages/component-manuscript/webpack.config.js @@ -54,6 +54,7 @@ module.exports = { loader: 'css-loader', options: { modules: true, + localIdentName: '[name]_[local]-[hash:base64:8]', } } ], @@ -69,7 +70,8 @@ module.exports = { loader: 'css-loader', options: { modules: true, - importLoaders: 1 + localIdentName: '[name]_[local]-[hash:base64:8]', + importLoaders: 1, } }, 'sass-loader' diff --git a/packages/component-review/styleguide.config.js b/packages/component-review/styleguide.config.js index 1b16d0007..08ed095d2 100644 --- a/packages/component-review/styleguide.config.js +++ b/packages/component-review/styleguide.config.js @@ -8,7 +8,6 @@ module.exports = { faker: 'faker' }, skipComponentsWithoutExample: true, - webpackConfig: require('./webpack.config.js'), serverPort: 6065, theme: { fontFamily: { diff --git a/packages/component-review/webpack.config.js b/packages/component-review/webpack.config.js index cc2081f4b..4aa149ad2 100644 --- a/packages/component-review/webpack.config.js +++ b/packages/component-review/webpack.config.js @@ -1,112 +1,3 @@ -process.env.BABEL_ENV = 'development' -process.env.NODE_ENV = 'development' +const webpackConfig = require('xpub-styleguide/src/webpack-config') -const path = require('path') -const nodeExternals = require('webpack-node-externals') - -const include = [ - path.join(__dirname, 'src'), - /xpub-[^/]+\/src/, -] - -module.exports = { - entry: './src/index.js', - output: { - filename: 'index.js', - path: path.join(__dirname, 'dist'), - }, - devtool: 'cheap-module-source-map', - externals: [nodeExternals({ - whitelist: [/\.(?!js$).{1,5}$/i] - })], - resolve: { - symlinks: false - }, - module: { - rules: [ - { - oneOf: [ - // ES6 modules - { - test: /\.js$/, - include, - loader: 'babel-loader', - options: { - presets: [ - ['env', { modules: false }], - 'react', - 'stage-2' - ], - cacheDirectory: true, - }, - }, - - // CSS modules - { - test: /\.local\.css$/, - include, - use: [ - 'style-loader', - { - loader: 'css-loader', - options: { - modules: true, - } - } - ], - }, - - // SCSS modules - { - test: /\.local\.scss$/, - include, - use: [ - 'style-loader', - { - loader: 'css-loader', - options: { - modules: true, - importLoaders: 1 - } - }, - 'sass-loader' - ], - }, - - // global CSS - { - test: /\.css$/, - use: [ - 'style-loader', - 'css-loader' - ], - }, - - // global SCSS - { - test: /\.scss$/, - use: [ - 'style-loader', - { - loader: 'css-loader', - options: { - importLoaders: 1 - } - }, - 'sass-loader' - ], - }, - - // Files - { - exclude: [/\.js$/, /\.html$/, /\.json$/], - loader: 'file-loader', - options: { - name: 'static/media/[name].[hash:8].[ext]', - } - } - ] - } - ] - } -} +module.exports = webpackConfig(__dirname) diff --git a/packages/component-submit/styleguide.config.js b/packages/component-submit/styleguide.config.js index e8e7e3157..ef2282aa0 100644 --- a/packages/component-submit/styleguide.config.js +++ b/packages/component-submit/styleguide.config.js @@ -8,7 +8,6 @@ module.exports = { faker: 'faker' }, skipComponentsWithoutExample: true, - webpackConfig: require('./webpack.config.js'), serverPort: 6064, theme: { fontFamily: { diff --git a/packages/component-submit/webpack.config.js b/packages/component-submit/webpack.config.js index cc2081f4b..4aa149ad2 100644 --- a/packages/component-submit/webpack.config.js +++ b/packages/component-submit/webpack.config.js @@ -1,112 +1,3 @@ -process.env.BABEL_ENV = 'development' -process.env.NODE_ENV = 'development' +const webpackConfig = require('xpub-styleguide/src/webpack-config') -const path = require('path') -const nodeExternals = require('webpack-node-externals') - -const include = [ - path.join(__dirname, 'src'), - /xpub-[^/]+\/src/, -] - -module.exports = { - entry: './src/index.js', - output: { - filename: 'index.js', - path: path.join(__dirname, 'dist'), - }, - devtool: 'cheap-module-source-map', - externals: [nodeExternals({ - whitelist: [/\.(?!js$).{1,5}$/i] - })], - resolve: { - symlinks: false - }, - module: { - rules: [ - { - oneOf: [ - // ES6 modules - { - test: /\.js$/, - include, - loader: 'babel-loader', - options: { - presets: [ - ['env', { modules: false }], - 'react', - 'stage-2' - ], - cacheDirectory: true, - }, - }, - - // CSS modules - { - test: /\.local\.css$/, - include, - use: [ - 'style-loader', - { - loader: 'css-loader', - options: { - modules: true, - } - } - ], - }, - - // SCSS modules - { - test: /\.local\.scss$/, - include, - use: [ - 'style-loader', - { - loader: 'css-loader', - options: { - modules: true, - importLoaders: 1 - } - }, - 'sass-loader' - ], - }, - - // global CSS - { - test: /\.css$/, - use: [ - 'style-loader', - 'css-loader' - ], - }, - - // global SCSS - { - test: /\.scss$/, - use: [ - 'style-loader', - { - loader: 'css-loader', - options: { - importLoaders: 1 - } - }, - 'sass-loader' - ], - }, - - // Files - { - exclude: [/\.js$/, /\.html$/, /\.json$/], - loader: 'file-loader', - options: { - name: 'static/media/[name].[hash:8].[ext]', - } - } - ] - } - ] - } -} +module.exports = webpackConfig(__dirname) diff --git a/packages/xpub-edit/styleguide.config.js b/packages/xpub-edit/styleguide.config.js index d8e7a5f3b..504ff81d9 100644 --- a/packages/xpub-edit/styleguide.config.js +++ b/packages/xpub-edit/styleguide.config.js @@ -6,7 +6,6 @@ module.exports = { }, serverPort: 6065, skipComponentsWithoutExample: true, - webpackConfig: require('./webpack.config.js'), context: { faker: 'faker' }, diff --git a/packages/xpub-edit/webpack.config.js b/packages/xpub-edit/webpack.config.js index 9b33525ec..4aa149ad2 100644 --- a/packages/xpub-edit/webpack.config.js +++ b/packages/xpub-edit/webpack.config.js @@ -1,88 +1,3 @@ -process.env.BABEL_ENV = 'development' -process.env.NODE_ENV = 'development' +const webpackConfig = require('xpub-styleguide/src/webpack-config') -const path = require('path') -// const nodeExternals = require('webpack-node-externals') - -const include = [ - path.join(__dirname, 'src'), - /xpub-[^/]+\/src/, -] - -module.exports = { - entry: './src/index.js', - output: { - filename: 'index.js', - path: path.join(__dirname, 'dist') - }, - devtool: 'cheap-module-source-map', - // externals: [nodeExternals({ - // whitelist: [/\.(?!js$).{1,5}$/i] - // })], - resolve: { - symlinks: false - }, - module: { - rules: [ - { - oneOf: [ - // ES6 modules - { - test: /\.js$/, - include, - loader: 'babel-loader', - options: { - presets: [ - ['env', { modules: false }], - 'react', - 'stage-2' - ], - cacheDirectory: true, - }, - }, - - // CSS modules - { - test: /\.local\.css$/, - include, - use: [ - 'style-loader', - { - loader: 'css-loader', - options: { - modules: true, - } - } - ], - }, - - // SCSS modules - { - test: /\.local\.scss$/, - include, - use: [ - 'style-loader', - { - loader: 'css-loader', - options: { - modules: true, - importLoaders: 1 - } - }, - 'sass-loader' - ], - }, - - // Files - { - exclude: [/\.js$/, /\.html$/, /\.json$/], - loader: 'file-loader', - options: { - name: 'static/media/[name].[hash:8].[ext]', - } - } - ] - } - ] - } -} +module.exports = webpackConfig(__dirname) diff --git a/packages/xpub-styleguide/src/webpack-config.js b/packages/xpub-styleguide/src/webpack-config.js new file mode 100644 index 000000000..51e0bbfef --- /dev/null +++ b/packages/xpub-styleguide/src/webpack-config.js @@ -0,0 +1,119 @@ +process.env.BABEL_ENV = 'development' +process.env.NODE_ENV = 'development' + +const path = require('path') +// const nodeExternals = require('webpack-node-externals') + +module.exports = dir => { + const include = [ + path.join(dir, 'src'), + /pubsweet-[^/]+\/src/, + /xpub-[^/]+\/src/, + ] + + return { + entry: './src/index.js', + output: { + filename: 'index.js', + path: path.join(dir, 'dist') + }, + devtool: 'cheap-module-source-map', + // externals: [nodeExternals({ + // whitelist: [/\.(?!js$).{1,5}$/i] + // })], + resolve: { + symlinks: false + }, + module: { + rules: [ + { + oneOf: [ + // ES6 modules + { + test: /\.js$/, + include, + loader: 'babel-loader', + options: { + presets: [ + ['env', {modules: false}], + 'react', + 'stage-2' + ], + cacheDirectory: true, + }, + }, + + // CSS modules + { + test: /\.local\.css$/, + include, + use: [ + 'style-loader', + { + loader: 'css-loader', + options: { + modules: true, + // sourceMap: true, + localIdentName: '[name]_[local]-[hash:base64:8]', + } + } + ], + }, + + // SCSS modules + { + test: /\.local\.scss$/, + include, + use: [ + 'style-loader', + { + loader: 'css-loader', + options: { + modules: true, + importLoaders: 1, + // sourceMap: true, + localIdentName: '[name]_[local]-[hash:base64:8]', + } + }, + 'sass-loader' + ], + }, + + // global CSS + { + test: /\.css$/, + use: [ + 'style-loader', + 'css-loader' + ], + }, + + // global SCSS + { + test: /\.scss$/, + use: [ + 'style-loader', + { + loader: 'css-loader', + options: { + importLoaders: 1, + } + }, + 'sass-loader' + ], + }, + + // Files + { + exclude: [/\.js$/, /\.html$/, /\.json$/], + loader: 'file-loader', + options: { + name: 'static/media/[name].[hash:8].[ext]', + } + } + ] + } + ] + } + } +} diff --git a/packages/xpub-styleguide/webpack.config.js b/packages/xpub-styleguide/webpack.config.js index c42f82e39..a50bd1983 100644 --- a/packages/xpub-styleguide/webpack.config.js +++ b/packages/xpub-styleguide/webpack.config.js @@ -1,76 +1,3 @@ -const path = require('path') -const nodeExternals = require('webpack-node-externals') +const webpackConfig = require('./src/webpack') -const include = [ - path.join(__dirname, 'src'), - /xpub-[^/]+\/src/, -] - -module.exports = { - entry: './src/index.js', - output: { - filename: 'index.js', - path: path.join(__dirname, 'dist'), - }, - devtool: 'cheap-module-source-map', - externals: [nodeExternals({ - whitelist: [/\.(?!js$).{1,5}$/i] - })], - resolve: { - symlinks: false - }, - module: { - rules: [ - { - oneOf: [ - // ES6 modules - { - test: /\.js$/, - include, - loader: 'babel-loader', - options: { - presets: [ - ['env', { modules: false }], - 'react', - 'stage-2' - ], - cacheDirectory: true, - }, - }, - - // CSS modules - { - test: /\.local\.css$/, - include, - use: [ - 'style-loader', - { - loader: 'css-loader', - options: { - modules: true, - } - } - ], - }, - - // SCSS modules - { - test: /\.local\.scss$/, - include, - use: [ - 'style-loader', - { - loader: 'css-loader', - options: { - modules: true, - importLoaders: 1 - } - }, - 'sass-loader' - ], - } - ] - } - ] - } -} +module.exports = webpackConfig(__dirname) diff --git a/packages/xpub-ui/styleguide.config.js b/packages/xpub-ui/styleguide.config.js index bbaeb5e35..18efe3b1d 100644 --- a/packages/xpub-ui/styleguide.config.js +++ b/packages/xpub-ui/styleguide.config.js @@ -8,7 +8,6 @@ module.exports = { faker: 'faker', }, skipComponentsWithoutExample: true, - webpackConfig: require('./webpack.config.js'), theme: { fontFamily: { base: '"Fira Sans", sans-serif' diff --git a/packages/xpub-ui/webpack.config.js b/packages/xpub-ui/webpack.config.js index cf91776ec..4aa149ad2 100644 --- a/packages/xpub-ui/webpack.config.js +++ b/packages/xpub-ui/webpack.config.js @@ -1,112 +1,3 @@ -process.env.BABEL_ENV = 'development' -process.env.NODE_ENV = 'development' +const webpackConfig = require('xpub-styleguide/src/webpack-config') -const path = require('path') -const nodeExternals = require('webpack-node-externals') - -const include = [ - path.join(__dirname, 'src'), - /xpub-[^/]+\/src/, -] - -module.exports = { - entry: './src/index.js', - output: { - filename: 'index.js', - path: path.join(__dirname, 'dist') - }, - devtool: 'cheap-module-source-map', - externals: [nodeExternals({ - whitelist: [/\.(?!js$).{1,5}$/i] - })], - resolve: { - symlinks: false - }, - module: { - rules: [ - { - oneOf: [ - // ES6 modules - { - test: /\.js$/, - include, - loader: 'babel-loader', - options: { - presets: [ - ['env', { modules: false }], - 'react', - 'stage-2' - ], - cacheDirectory: true, - }, - }, - - // CSS modules - { - test: /\.local\.css$/, - include, - use: [ - 'style-loader', - { - loader: 'css-loader', - options: { - modules: true, - } - } - ], - }, - - // SCSS modules - { - test: /\.local\.scss$/, - include, - use: [ - 'style-loader', - { - loader: 'css-loader', - options: { - modules: true, - importLoaders: 1 - } - }, - 'sass-loader' - ], - }, - - // global CSS - { - test: /\.css$/, - use: [ - 'style-loader', - 'css-loader' - ], - }, - - // global SCSS - { - test: /\.scss$/, - use: [ - 'style-loader', - { - loader: 'css-loader', - options: { - importLoaders: 1 - } - }, - 'sass-loader' - ], - }, - - // Files - { - exclude: [/\.js$/, /\.html$/, /\.json$/], - loader: 'file-loader', - options: { - name: 'static/media/[name].[hash:8].[ext]', - } - } - ] - } - ] - } -} +module.exports = webpackConfig(__dirname) -- GitLab