From 3d3832d5302d2783f59ba07f7bb912795d18a3bd Mon Sep 17 00:00:00 2001 From: Michael Taranto Date: Mon, 12 Aug 2019 15:55:45 +1000 Subject: [PATCH] fix(deps): Upgrade css-loader & remove work around (#414) --- config/webpack/utils/getIdentName.js | 48 ---------------------------- config/webpack/utils/loaders.js | 2 -- package.json | 3 +- yarn.lock | 8 ++--- 4 files changed, 5 insertions(+), 56 deletions(-) delete mode 100644 config/webpack/utils/getIdentName.js diff --git a/config/webpack/utils/getIdentName.js b/config/webpack/utils/getIdentName.js deleted file mode 100644 index d86aeb048..000000000 --- a/config/webpack/utils/getIdentName.js +++ /dev/null @@ -1,48 +0,0 @@ -const path = require('path'); -const loaderUtils = require('loader-utils'); - -// css-loader@3+ does not escape characters in selectors as expected. -// Since upgrading if the `[name]` local contains a `.` it is not replaced -// with a `-` as previously in v2. This causes an issue in development -// where we use the `[name]__[local]__[hash]` identName. -// -// A css module in a `.css.js` file will result in an invalid selector, eg: -// Input: -// ## button.css.js -// export default { -// '.container': { /* css rules */ } -// } -// Output v2: `button-css__container__` -// Output v3: `button.css__container__` -// -// Have raise issue with css-loader reverting to `getLocalIdent` behaviour -// from css-loader@2.1.1 -// Issue: https://github.com/webpack-contrib/css-loader/issues/966#issuecomment-514874689 -// Source: https://github.com/webpack-contrib/css-loader/blob/v2.1.1/src/utils.js#L68 - -function getLocalIdent(loaderContext, localIdentName, localName, options) { - if (!options.context) { - options.context = loaderContext.rootContext; - } - - const request = path - .relative(options.context, loaderContext.resourcePath) - .replace(/\\/g, '/'); - - options.content = `${options.hashPrefix + request}+${unescape(localName)}`; - - // eslint-disable-next-line no-param-reassign - localIdentName = localIdentName.replace(/\[local\]/gi, localName); - - const hash = loaderUtils.interpolateName( - loaderContext, - localIdentName, - options, - ); - - return hash - .replace(new RegExp('[^a-zA-Z0-9\\-_\u00A0-\uFFFF]', 'g'), '-') - .replace(/^((-?[0-9])|--)/, '_$1'); -} - -module.exports = getLocalIdent; diff --git a/config/webpack/utils/loaders.js b/config/webpack/utils/loaders.js index 09a95d375..8eb5be62f 100644 --- a/config/webpack/utils/loaders.js +++ b/config/webpack/utils/loaders.js @@ -3,7 +3,6 @@ const { isProductionBuild, isCI } = require('./env'); const isTypeScript = require('../../../lib/isTypeScript'); const { resolvePackage } = require('./resolvePackage'); const MiniCssExtractPlugin = require('mini-css-extract-plugin'); -const getLocalIdent = require('./getIdentName'); /** * e.g. @@ -73,7 +72,6 @@ const makeCssLoaders = (options = {}) => { modules: { mode: 'local', localIdentName: `${debugIdent}[hash:base64:7]`, - getLocalIdent, }, // On the server, avoid generating a CSS file with onlyLocals. diff --git a/package.json b/package.json index 6f596c694..41f35ce24 100644 --- a/package.json +++ b/package.json @@ -106,7 +106,7 @@ "chalk": "^2.4.2", "command-line-args": "^5.1.1", "cross-spawn": "^6.0.5", - "css-loader": "^3.1.0", + "css-loader": "^3.2.0", "css-modules-typescript-loader": "1.1.1", "cssnano": "^4.1.10", "death": "^1.1.0", @@ -135,7 +135,6 @@ "kopy": "8.3.1", "less": "^3.9.0", "less-loader": "^5.0.0", - "loader-utils": "^1.2.3", "lodash": "^4.17.15", "memoizee": "^0.4.14", "mini-css-extract-plugin": "^0.8.0", diff --git a/yarn.lock b/yarn.lock index 67367f0bb..2909e9a0c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5074,10 +5074,10 @@ css-loader@^2.1.0, css-loader@^2.1.1: postcss-value-parser "^3.3.0" schema-utils "^1.0.0" -css-loader@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-3.1.0.tgz#6f008b993b8ce812e6bab57f3cbfdc7a7cf28685" - integrity sha512-MuL8WsF/KSrHCBCYaozBKlx+r7vIfUaDTEreo7wR7Vv3J6N0z6fqWjRk3e/6wjneitXN1r/Y9FTK1psYNOBdJQ== +css-loader@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-3.2.0.tgz#bb570d89c194f763627fcf1f80059c6832d009b2" + integrity sha512-QTF3Ud5H7DaZotgdcJjGMvyDj5F3Pn1j/sC6VBEOVp94cbwqyIBdcs/quzj4MC1BKQSrTpQznegH/5giYbhnCQ== dependencies: camelcase "^5.3.1" cssesc "^3.0.0"