From bf7f56c96efb8e1a44812a3cc64874af40bb3ade Mon Sep 17 00:00:00 2001 From: Hung Viet Nguyen Date: Sat, 6 Feb 2021 00:28:47 +0700 Subject: [PATCH 1/2] Convert invalid characters in SVG component name to ASCII --- packages/react-scripts/config/jest/fileTransform.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/react-scripts/config/jest/fileTransform.js b/packages/react-scripts/config/jest/fileTransform.js index aab67618c38..5d34ec19507 100644 --- a/packages/react-scripts/config/jest/fileTransform.js +++ b/packages/react-scripts/config/jest/fileTransform.js @@ -16,7 +16,11 @@ module.exports = { const pascalCaseFilename = camelcase(path.parse(filename).name, { pascalCase: true, }); - const componentName = `Svg${pascalCaseFilename}`; + const pascalCaseValidFilename = pascalCaseFilename + .split('') + .map(char => (/[a-zA-Z0-9_]/.test(char) ? char : char.codePointAt(0))) + .join(''); + const componentName = `Svg${pascalCaseValidFilename}`; return `const React = require('react'); module.exports = { __esModule: true, From e7432e4c020c4c9d3a7a4a344f3823242d465390 Mon Sep 17 00:00:00 2001 From: Hung Viet Nguyen Date: Sat, 6 Feb 2021 11:54:54 +0700 Subject: [PATCH 2/2] test: Add test to avoid failed to transform some svg files --- packages/react-scripts/config/jest/fileTransform.js | 1 + .../template/src/features/webpack/SvgInclusion.js | 6 +++++- .../template/src/features/webpack/assets/logo@2x.svg | 1 + 3 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 packages/react-scripts/fixtures/kitchensink/template/src/features/webpack/assets/logo@2x.svg diff --git a/packages/react-scripts/config/jest/fileTransform.js b/packages/react-scripts/config/jest/fileTransform.js index 5d34ec19507..2384f3df093 100644 --- a/packages/react-scripts/config/jest/fileTransform.js +++ b/packages/react-scripts/config/jest/fileTransform.js @@ -16,6 +16,7 @@ module.exports = { const pascalCaseFilename = camelcase(path.parse(filename).name, { pascalCase: true, }); + // Convert invalid character to ASCII number const pascalCaseValidFilename = pascalCaseFilename .split('') .map(char => (/[a-zA-Z0-9_]/.test(char) ? char : char.codePointAt(0))) diff --git a/packages/react-scripts/fixtures/kitchensink/template/src/features/webpack/SvgInclusion.js b/packages/react-scripts/fixtures/kitchensink/template/src/features/webpack/SvgInclusion.js index 7ef580c0103..4fdc2791f69 100644 --- a/packages/react-scripts/fixtures/kitchensink/template/src/features/webpack/SvgInclusion.js +++ b/packages/react-scripts/fixtures/kitchensink/template/src/features/webpack/SvgInclusion.js @@ -7,9 +7,13 @@ import React from 'react'; import logo from './assets/logo.svg'; +import logo2 from './assets/logo@2x.svg'; const SvgInclusion = () => ( - logo + <> + logo + logo + ); export default SvgInclusion; diff --git a/packages/react-scripts/fixtures/kitchensink/template/src/features/webpack/assets/logo@2x.svg b/packages/react-scripts/fixtures/kitchensink/template/src/features/webpack/assets/logo@2x.svg new file mode 100644 index 00000000000..9dfc1c058ce --- /dev/null +++ b/packages/react-scripts/fixtures/kitchensink/template/src/features/webpack/assets/logo@2x.svg @@ -0,0 +1 @@ + \ No newline at end of file