Skip to content

Commit 762fb16

Browse files
committed
support named exports
1 parent 09b69e0 commit 762fb16

File tree

2 files changed

+19
-1
lines changed

2 files changed

+19
-1
lines changed

src/index.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ const {
33
filenameToPascalCase,
44
filenameToTypingsFilename,
55
getCssModuleKeys,
6+
getNamedExports,
67
generateGenericExportInterface,
78
} = require("./utils");
89
const persist = require("./persist");
@@ -63,9 +64,12 @@ module.exports = function (content, ...args) {
6364

6465
// let's only check `exports.locals` for keys to avoid getting keys from the sourcemap when it's enabled
6566
// if we cannot find locals, then the module only contains global styles
67+
const isModule = /(?:^|\n)export\s+(?:var|let|const)\s+\S+\s*=/g.test(content)
6668
const indexOfLocals = content.indexOf(".locals");
6769
const cssModuleKeys =
68-
indexOfLocals === -1
70+
isModule
71+
? getNamedExports(content)
72+
: indexOfLocals === -1
6973
? []
7074
: getCssModuleKeys(content.substring(indexOfLocals));
7175

src/utils.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,19 @@ const getCssModuleKeys = (content) => {
1919
return cssModuleKeys;
2020
};
2121

22+
const getNamedExports = (content) => {
23+
const exportRegex = /(?:^|\n)export\s+(?:var|let|const)\s+(\S+?)\s*=/g;
24+
let match;
25+
const namedExports = [];
26+
27+
while ((match = exportRegex.exec(content))) {
28+
if (namedExports.indexOf(match[1]) < 0) {
29+
namedExports.push(match[1]);
30+
}
31+
}
32+
return namedExports;
33+
};
34+
2235
/**
2336
* @param {string} filename
2437
*/
@@ -80,6 +93,7 @@ export = ${moduleName};`;
8093

8194
module.exports = {
8295
getCssModuleKeys,
96+
getNamedExports,
8397
filenameToPascalCase,
8498
filenameToTypingsFilename,
8599
generateGenericExportInterface,

0 commit comments

Comments
 (0)