From f8c0b4c1bd63879b1aca10df69b758a53aae56d6 Mon Sep 17 00:00:00 2001 From: lijialiang Date: Mon, 26 Jun 2017 11:48:25 +0800 Subject: [PATCH 1/3] add `include` to the configuration . e.g. `include: '\\.module\\.css'` --- src/index.js | 21 +++++++++++++++++++++ src/schemas/optionsSchema.json | 5 ++++- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/src/index.js b/src/index.js index 4152ace..230be19 100644 --- a/src/index.js +++ b/src/index.js @@ -130,10 +130,31 @@ export default ({ return false; }; + const includeForPlugin = (path: Object, stats: Object) => { + stats.opts.filetypes = stats.opts.filetypes || {}; + + const extension = path.node.source.value.lastIndexOf('.') > -1 ? path.node.source.value.substr(path.node.source.value.lastIndexOf('.')) : null; + + if (extension !== '.css' && Object.keys(stats.opts.filetypes).indexOf(extension) < 0) { + return false; + } + + if (stats.opts.include && getTargetResourcePath(path, stats).match(new RegExp(stats.opts.include))) { + return true; + } + + return false; + } + return { inherits: babelPluginJsxSyntax, visitor: { ImportDeclaration (path: Object, stats: Object): void { + + if (!includeForPlugin(path, stats)) { + return; + } + if (notForPlugin(path, stats)) { return; } diff --git a/src/schemas/optionsSchema.json b/src/schemas/optionsSchema.json index 440a1d5..287f10d 100644 --- a/src/schemas/optionsSchema.json +++ b/src/schemas/optionsSchema.json @@ -7,6 +7,9 @@ "exclude": { "type": "string" }, + "include": { + "type": "string" + }, "filetypes": { "additionalProperties": false, "patternProperties": { @@ -39,4 +42,4 @@ } }, "type": "object" -} \ No newline at end of file +} From 9407abb350bf87dfa9b04c06d4b1dd5f8d8f2a5e Mon Sep 17 00:00:00 2001 From: lijialiang Date: Mon, 26 Jun 2017 12:46:48 +0800 Subject: [PATCH 2/3] add `include` testcase --- .../include styles from react-css-modules/actual.js | 4 ++++ .../include styles from react-css-modules/bar.css | 1 + .../include styles from react-css-modules/expected.js | 4 ++++ .../include styles from react-css-modules/is_me.css | 1 + .../options.json | 11 +++++++++++ 5 files changed, 21 insertions(+) create mode 100644 test/fixtures/react-css-modules/include styles from react-css-modules/actual.js create mode 100644 test/fixtures/react-css-modules/include styles from react-css-modules/bar.css create mode 100644 test/fixtures/react-css-modules/include styles from react-css-modules/expected.js create mode 100644 test/fixtures/react-css-modules/include styles from react-css-modules/is_me.css create mode 100644 test/fixtures/react-css-modules/include styles from react-css-modules/options.json diff --git a/test/fixtures/react-css-modules/include styles from react-css-modules/actual.js b/test/fixtures/react-css-modules/include styles from react-css-modules/actual.js new file mode 100644 index 0000000..f16529d --- /dev/null +++ b/test/fixtures/react-css-modules/include styles from react-css-modules/actual.js @@ -0,0 +1,4 @@ +import './bar.css'; +import './is_me.css'; + +
; diff --git a/test/fixtures/react-css-modules/include styles from react-css-modules/bar.css b/test/fixtures/react-css-modules/include styles from react-css-modules/bar.css new file mode 100644 index 0000000..477ee5c --- /dev/null +++ b/test/fixtures/react-css-modules/include styles from react-css-modules/bar.css @@ -0,0 +1 @@ +.other {} diff --git a/test/fixtures/react-css-modules/include styles from react-css-modules/expected.js b/test/fixtures/react-css-modules/include styles from react-css-modules/expected.js new file mode 100644 index 0000000..cf4c318 --- /dev/null +++ b/test/fixtures/react-css-modules/include styles from react-css-modules/expected.js @@ -0,0 +1,4 @@ +import './bar.css'; +import './is_me.css'; + +
; diff --git a/test/fixtures/react-css-modules/include styles from react-css-modules/is_me.css b/test/fixtures/react-css-modules/include styles from react-css-modules/is_me.css new file mode 100644 index 0000000..5512dae --- /dev/null +++ b/test/fixtures/react-css-modules/include styles from react-css-modules/is_me.css @@ -0,0 +1 @@ +.a {} diff --git a/test/fixtures/react-css-modules/include styles from react-css-modules/options.json b/test/fixtures/react-css-modules/include styles from react-css-modules/options.json new file mode 100644 index 0000000..b183e96 --- /dev/null +++ b/test/fixtures/react-css-modules/include styles from react-css-modules/options.json @@ -0,0 +1,11 @@ +{ + "plugins": [ + [ + "../../../../src", + { + "generateScopedName": "[name]__[local]", + "include": "is_me" + } + ] + ] +} From a8e211ec68a1dfc42e77dea9171ca17f2dd38819 Mon Sep 17 00:00:00 2001 From: lijialiang Date: Thu, 29 Jun 2017 09:34:08 +0800 Subject: [PATCH 3/3] fixed eslint errors --- src/index.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/index.js b/src/index.js index 230be19..c33f0ec 100644 --- a/src/index.js +++ b/src/index.js @@ -144,13 +144,12 @@ export default ({ } return false; - } + }; return { inherits: babelPluginJsxSyntax, visitor: { ImportDeclaration (path: Object, stats: Object): void { - if (!includeForPlugin(path, stats)) { return; }