From 8347479f5d801b6b9756e804b62e04e517fed196 Mon Sep 17 00:00:00 2001 From: Yamagishi Kazutoshi Date: Fri, 15 Mar 2019 23:05:31 +0900 Subject: Bump webpacker from 3.5.5 to 4.0.2 (#10277) Bumps [webpacker](https://github.com/rails/webpacker) from 3.5.5 to 4.0.2. - [Release notes](https://github.com/rails/webpacker/releases) - [Changelog](https://github.com/rails/webpacker/blob/master/CHANGELOG.md) - [Commits](https://github.com/rails/webpacker/compare/v3.5.5...v4.0.2) Signed-off-by: dependabot[bot] Co-authored-by: Yamagishi Kazutoshi --- config/webpack/rules/babel.js | 21 +++++++++++++++++++++ config/webpack/rules/css.js | 30 ++++++++++++++++++++++++++++++ config/webpack/rules/file.js | 20 ++++++++++++++++++++ config/webpack/rules/index.js | 14 ++++++++++++++ config/webpack/rules/mark.js | 8 ++++++++ config/webpack/rules/node_modules.js | 26 ++++++++++++++++++++++++++ 6 files changed, 119 insertions(+) create mode 100644 config/webpack/rules/babel.js create mode 100644 config/webpack/rules/css.js create mode 100644 config/webpack/rules/file.js create mode 100644 config/webpack/rules/index.js create mode 100644 config/webpack/rules/mark.js create mode 100644 config/webpack/rules/node_modules.js (limited to 'config/webpack/rules') diff --git a/config/webpack/rules/babel.js b/config/webpack/rules/babel.js new file mode 100644 index 000000000..2fc245c43 --- /dev/null +++ b/config/webpack/rules/babel.js @@ -0,0 +1,21 @@ +const { join, resolve } = require('path'); +const { env, settings } = require('../configuration'); + +module.exports = { + test: /\.(js|jsx|mjs)$/, + include: [ + settings.source_path, + ...settings.resolved_paths, + ].map(p => resolve(p)), + exclude: /node_modules/, + use: [ + { + loader: 'babel-loader', + options: { + cacheDirectory: join(settings.cache_path, 'babel-loader'), + cacheCompression: env.NODE_ENV === 'production', + compact: env.NODE_ENV === 'production', + }, + }, + ], +}; diff --git a/config/webpack/rules/css.js b/config/webpack/rules/css.js new file mode 100644 index 000000000..27905a617 --- /dev/null +++ b/config/webpack/rules/css.js @@ -0,0 +1,30 @@ +const MiniCssExtractPlugin = require('mini-css-extract-plugin'); + +module.exports = { + test: /\.s?css$/i, + use: [ + MiniCssExtractPlugin.loader, + { + loader: 'css-loader', + options: { + sourceMap: true, + importLoaders: 2, + localIdentName: '[name]__[local]___[hash:base64:5]', + }, + }, + { + loader: 'postcss-loader', + options: { + sourceMap: true, + }, + }, + { + loader: 'sass-loader', + options: { + fiber: require('fibers'), + implementation: require('sass'), + sourceMap: true, + }, + }, + ], +}; diff --git a/config/webpack/rules/file.js b/config/webpack/rules/file.js new file mode 100644 index 000000000..f2fb58780 --- /dev/null +++ b/config/webpack/rules/file.js @@ -0,0 +1,20 @@ +const { join } = require('path'); +const { settings } = require('../configuration'); + +module.exports = { + test: new RegExp(`(${settings.static_assets_extensions.join('|')})$`, 'i'), + use: [ + { + loader: 'file-loader', + options: { + name(file) { + if (file.includes(settings.source_path)) { + return 'media/[path][name]-[hash].[ext]'; + } + return 'media/[folder]/[name]-[hash:8].[ext]'; + }, + context: join(settings.source_path), + }, + }, + ], +}; diff --git a/config/webpack/rules/index.js b/config/webpack/rules/index.js new file mode 100644 index 000000000..bbf6b0187 --- /dev/null +++ b/config/webpack/rules/index.js @@ -0,0 +1,14 @@ +const babel = require('./babel'); +const css = require('./css'); +const file = require('./file'); +const nodeModules = require('./node_modules'); + +// Webpack loaders are processed in reverse order +// https://webpack.js.org/concepts/loaders/#loader-features +// Lastly, process static files using file loader +module.exports = { + file, + css, + nodeModules, + babel, +}; diff --git a/config/webpack/rules/mark.js b/config/webpack/rules/mark.js new file mode 100644 index 000000000..e62a526b0 --- /dev/null +++ b/config/webpack/rules/mark.js @@ -0,0 +1,8 @@ +if (process.env.NODE_ENV === 'production') { + module.exports = {}; +} else { + module.exports = { + test: /\.js$/, + loader: 'mark-loader', + }; +} diff --git a/config/webpack/rules/node_modules.js b/config/webpack/rules/node_modules.js new file mode 100644 index 000000000..422554a76 --- /dev/null +++ b/config/webpack/rules/node_modules.js @@ -0,0 +1,26 @@ +const { join } = require('path'); +const { settings, env } = require('../configuration'); + +module.exports = { + test: /\.(js|mjs)$/, + include: /node_modules/, + exclude: /@babel(?:\/|\\{1,2})runtime/, + use: [ + { + loader: 'babel-loader', + options: { + babelrc: false, + presets: [ + ['@babel/env', { modules: false }], + ], + plugins: [ + 'transform-react-remove-prop-types', + ], + cacheDirectory: join(settings.cache_path, 'babel-loader-node-modules'), + cacheCompression: env.NODE_ENV === 'production', + compact: false, + sourceMaps: false, + }, + }, + ], +}; -- cgit From 1a0d3c9c65d663210494ec9b55912debad6331f5 Mon Sep 17 00:00:00 2001 From: Yamagishi Kazutoshi Date: Sat, 16 Mar 2019 19:24:26 +0900 Subject: Do not use @babel/preset-env to compile node_modules (#10289) --- config/webpack/rules/node_modules.js | 3 --- 1 file changed, 3 deletions(-) (limited to 'config/webpack/rules') diff --git a/config/webpack/rules/node_modules.js b/config/webpack/rules/node_modules.js index 422554a76..7ed05504b 100644 --- a/config/webpack/rules/node_modules.js +++ b/config/webpack/rules/node_modules.js @@ -10,9 +10,6 @@ module.exports = { loader: 'babel-loader', options: { babelrc: false, - presets: [ - ['@babel/env', { modules: false }], - ], plugins: [ 'transform-react-remove-prop-types', ], -- cgit