From 33e79e2857c0424d7e30c34657f23dd6fb9dac53 Mon Sep 17 00:00:00 2001 From: David Liu Date: Sat, 22 Feb 2020 18:54:23 +0800 Subject: [PATCH 1/4] Add global classes to exports --- src/index.js | 3 +++ test/test-cases/escape-sequence/expected.css | 2 ++ .../export-global-class/expected.css | 22 +++++++++++++++++++ .../test-cases/export-global-class/source.css | 17 ++++++++++++++ .../export-nested-class/expected.css | 1 + .../export-with-global-composes/expected.css | 3 +++ test/test-cases/nothing/expected.css | 4 ++++ 7 files changed, 52 insertions(+) create mode 100644 test/test-cases/export-global-class/expected.css create mode 100644 test/test-cases/export-global-class/source.css diff --git a/src/index.js b/src/index.js index e593bff..af60997 100644 --- a/src/index.js +++ b/src/index.js @@ -173,6 +173,9 @@ const processor = postcss.plugin('postcss-modules-scope', function(options) { node.each(traverseNode); break; } + case 'class': + exports[node.value] = [node.value]; + break; } return node; } diff --git a/test/test-cases/escape-sequence/expected.css b/test/test-cases/escape-sequence/expected.css index a4c52d0..194b781 100644 --- a/test/test-cases/escape-sequence/expected.css +++ b/test/test-cases/escape-sequence/expected.css @@ -77,4 +77,6 @@ :export { smile: 😀; smile_with_A: 😀A; + 😀: 😀; + a: a; } diff --git a/test/test-cases/export-global-class/expected.css b/test/test-cases/export-global-class/expected.css new file mode 100644 index 0000000..001359c --- /dev/null +++ b/test/test-cases/export-global-class/expected.css @@ -0,0 +1,22 @@ +.exportName { + color: green; +} + +.exportName:hover { + color: red; +} + +@media screen { + body { + background: red; + } +} + +._input__testLocal { + color: blue; +} + +:export { + exportName: exportName; + testLocal: _input__testLocal; +} \ No newline at end of file diff --git a/test/test-cases/export-global-class/source.css b/test/test-cases/export-global-class/source.css new file mode 100644 index 0000000..21c4db0 --- /dev/null +++ b/test/test-cases/export-global-class/source.css @@ -0,0 +1,17 @@ +.exportName { + color: green; +} + +.exportName:hover { + color: red; +} + +@media screen { + body { + background: red; + } +} + +:local(.testLocal) { + color: blue; +} \ No newline at end of file diff --git a/test/test-cases/export-nested-class/expected.css b/test/test-cases/export-nested-class/expected.css index 10811a5..f3bc639 100644 --- a/test/test-cases/export-nested-class/expected.css +++ b/test/test-cases/export-nested-class/expected.css @@ -9,5 +9,6 @@ :export { exportName: _input__exportName; otherExportName: _input__otherExportName; + global: global; otherExportName2: _input__otherExportName2; } diff --git a/test/test-cases/export-with-global-composes/expected.css b/test/test-cases/export-with-global-composes/expected.css index 83b9b33..c5d9343 100644 --- a/test/test-cases/export-with-global-composes/expected.css +++ b/test/test-cases/export-with-global-composes/expected.css @@ -3,4 +3,7 @@ .aThirdClass { color: red; } ._lib_extender__exportName { color: green; } :export { + otherClass: otherClass; + andAgain: andAgain; + aThirdClass: aThirdClass; exportName: _lib_extender__exportName otherClass andAgain aThirdClass; } diff --git a/test/test-cases/nothing/expected.css b/test/test-cases/nothing/expected.css index 9588005..79ffab5 100644 --- a/test/test-cases/nothing/expected.css +++ b/test/test-cases/nothing/expected.css @@ -11,3 +11,7 @@ background: red; } } + +:export { + exportName: exportName; +} \ No newline at end of file From b34e8c93a01774acda8dc8e8c666087b6b29dac9 Mon Sep 17 00:00:00 2001 From: David Liu Date: Sat, 22 Feb 2020 22:07:29 +0800 Subject: [PATCH 2/4] Add global id to exports --- src/index.js | 1 + test/test-cases/export-global-id/expected.css | 23 +++++++++++++++++++ test/test-cases/export-global-id/source.css | 17 ++++++++++++++ 3 files changed, 41 insertions(+) create mode 100644 test/test-cases/export-global-id/expected.css create mode 100644 test/test-cases/export-global-id/source.css diff --git a/src/index.js b/src/index.js index af60997..aafc43e 100644 --- a/src/index.js +++ b/src/index.js @@ -173,6 +173,7 @@ const processor = postcss.plugin('postcss-modules-scope', function(options) { node.each(traverseNode); break; } + case 'id': case 'class': exports[node.value] = [node.value]; break; diff --git a/test/test-cases/export-global-id/expected.css b/test/test-cases/export-global-id/expected.css new file mode 100644 index 0000000..0b7c096 --- /dev/null +++ b/test/test-cases/export-global-id/expected.css @@ -0,0 +1,23 @@ +#exportName { + color: green; +} + +#exportName:hover { + color: red; +} + +@media screen { + #exportName-2 { + background: red; + } +} + +#_input__exportName-3 { + color: green; +} + +:export { + exportName: exportName; + exportName-2: exportName-2; + exportName-3: _input__exportName-3; +} \ No newline at end of file diff --git a/test/test-cases/export-global-id/source.css b/test/test-cases/export-global-id/source.css new file mode 100644 index 0000000..04e2a40 --- /dev/null +++ b/test/test-cases/export-global-id/source.css @@ -0,0 +1,17 @@ +#exportName { + color: green; +} + +#exportName:hover { + color: red; +} + +@media screen { + #exportName-2 { + background: red; + } +} + +:local(#exportName-3) { + color: green; +} \ No newline at end of file From 14a35d4a9a5a834344a9adc4b44e6becf16dbe56 Mon Sep 17 00:00:00 2001 From: David Liu Date: Sat, 22 Feb 2020 22:34:46 +0800 Subject: [PATCH 3/4] Add line feeds --- test/test-cases/export-global-class/expected.css | 2 +- test/test-cases/export-global-class/source.css | 2 +- test/test-cases/export-global-id/expected.css | 2 +- test/test-cases/export-global-id/source.css | 2 +- test/test-cases/nothing/expected.css | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/test/test-cases/export-global-class/expected.css b/test/test-cases/export-global-class/expected.css index 001359c..00fbf4e 100644 --- a/test/test-cases/export-global-class/expected.css +++ b/test/test-cases/export-global-class/expected.css @@ -19,4 +19,4 @@ :export { exportName: exportName; testLocal: _input__testLocal; -} \ No newline at end of file +} diff --git a/test/test-cases/export-global-class/source.css b/test/test-cases/export-global-class/source.css index 21c4db0..bf0319b 100644 --- a/test/test-cases/export-global-class/source.css +++ b/test/test-cases/export-global-class/source.css @@ -14,4 +14,4 @@ :local(.testLocal) { color: blue; -} \ No newline at end of file +} diff --git a/test/test-cases/export-global-id/expected.css b/test/test-cases/export-global-id/expected.css index 0b7c096..2939cf8 100644 --- a/test/test-cases/export-global-id/expected.css +++ b/test/test-cases/export-global-id/expected.css @@ -20,4 +20,4 @@ exportName: exportName; exportName-2: exportName-2; exportName-3: _input__exportName-3; -} \ No newline at end of file +} diff --git a/test/test-cases/export-global-id/source.css b/test/test-cases/export-global-id/source.css index 04e2a40..50843b8 100644 --- a/test/test-cases/export-global-id/source.css +++ b/test/test-cases/export-global-id/source.css @@ -14,4 +14,4 @@ :local(#exportName-3) { color: green; -} \ No newline at end of file +} diff --git a/test/test-cases/nothing/expected.css b/test/test-cases/nothing/expected.css index 79ffab5..4c3ec90 100644 --- a/test/test-cases/nothing/expected.css +++ b/test/test-cases/nothing/expected.css @@ -14,4 +14,4 @@ :export { exportName: exportName; -} \ No newline at end of file +} From 3db829adb766e8a7c545d275477c7a3b3a53c0cb Mon Sep 17 00:00:00 2001 From: David Liu Date: Wed, 26 Feb 2020 09:59:53 +0800 Subject: [PATCH 4/4] Add `exportGlobals` option --- src/index.js | 5 ++++- test/test-cases/escape-sequence/expected.css | 2 -- test/test-cases/export-global-class/options.js | 3 +++ test/test-cases/export-global-id/options.js | 3 +++ test/test-cases/export-nested-class/expected.css | 1 - test/test-cases/export-with-global-composes/expected.css | 3 --- test/test-cases/nothing/expected.css | 4 ---- 7 files changed, 10 insertions(+), 11 deletions(-) create mode 100644 test/test-cases/export-global-class/options.js create mode 100644 test/test-cases/export-global-id/options.js diff --git a/src/index.js b/src/index.js index aafc43e..0ed854b 100644 --- a/src/index.js +++ b/src/index.js @@ -86,6 +86,7 @@ const processor = postcss.plugin('postcss-modules-scope', function(options) { (options && options.generateScopedName) || processor.generateScopedName; const generateExportEntry = (options && options.generateExportEntry) || processor.generateExportEntry; + const exportGlobals = options && options.exportGlobals; const exports = Object.create(null); @@ -175,7 +176,9 @@ const processor = postcss.plugin('postcss-modules-scope', function(options) { } case 'id': case 'class': - exports[node.value] = [node.value]; + if (exportGlobals) { + exports[node.value] = [node.value]; + } break; } return node; diff --git a/test/test-cases/escape-sequence/expected.css b/test/test-cases/escape-sequence/expected.css index 194b781..a4c52d0 100644 --- a/test/test-cases/escape-sequence/expected.css +++ b/test/test-cases/escape-sequence/expected.css @@ -77,6 +77,4 @@ :export { smile: 😀; smile_with_A: 😀A; - 😀: 😀; - a: a; } diff --git a/test/test-cases/export-global-class/options.js b/test/test-cases/export-global-class/options.js new file mode 100644 index 0000000..db683c8 --- /dev/null +++ b/test/test-cases/export-global-class/options.js @@ -0,0 +1,3 @@ +module.exports = { + exportGlobals: true, +}; diff --git a/test/test-cases/export-global-id/options.js b/test/test-cases/export-global-id/options.js new file mode 100644 index 0000000..db683c8 --- /dev/null +++ b/test/test-cases/export-global-id/options.js @@ -0,0 +1,3 @@ +module.exports = { + exportGlobals: true, +}; diff --git a/test/test-cases/export-nested-class/expected.css b/test/test-cases/export-nested-class/expected.css index f3bc639..10811a5 100644 --- a/test/test-cases/export-nested-class/expected.css +++ b/test/test-cases/export-nested-class/expected.css @@ -9,6 +9,5 @@ :export { exportName: _input__exportName; otherExportName: _input__otherExportName; - global: global; otherExportName2: _input__otherExportName2; } diff --git a/test/test-cases/export-with-global-composes/expected.css b/test/test-cases/export-with-global-composes/expected.css index c5d9343..83b9b33 100644 --- a/test/test-cases/export-with-global-composes/expected.css +++ b/test/test-cases/export-with-global-composes/expected.css @@ -3,7 +3,4 @@ .aThirdClass { color: red; } ._lib_extender__exportName { color: green; } :export { - otherClass: otherClass; - andAgain: andAgain; - aThirdClass: aThirdClass; exportName: _lib_extender__exportName otherClass andAgain aThirdClass; } diff --git a/test/test-cases/nothing/expected.css b/test/test-cases/nothing/expected.css index 4c3ec90..9588005 100644 --- a/test/test-cases/nothing/expected.css +++ b/test/test-cases/nothing/expected.css @@ -11,7 +11,3 @@ background: red; } } - -:export { - exportName: exportName; -}