Skip to content

Commit 4641eb6

Browse files
committed
Merge branch 'release/1.2.1'
2 parents 9c2a3df + 8d728db commit 4641eb6

File tree

8 files changed

+334
-269
lines changed

8 files changed

+334
-269
lines changed

package.json

+12-12
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "typescript-plugin-css-modules",
3-
"version": "1.2.0",
3+
"version": "1.2.1",
44
"main": "lib/index.js",
55
"author": "Brody McKee <[email protected]>",
66
"license": "MIT",
@@ -47,27 +47,27 @@
4747
"trailingComma": "all"
4848
},
4949
"dependencies": {
50-
"icss-utils": "^4.1.0",
50+
"icss-utils": "^4.1.1",
5151
"less": "^3.9.0",
52-
"lodash": "^4.17.11",
53-
"postcss": "^7.0.16",
52+
"lodash": "^4.17.14",
53+
"postcss": "^7.0.17",
5454
"postcss-icss-selectors": "^2.0.3",
5555
"reserved-words": "^0.1.2",
56-
"sass": "^1.20.1"
56+
"sass": "^1.22.4"
5757
},
5858
"devDependencies": {
59-
"@types/jest": "^24.0.13",
59+
"@types/jest": "^24.0.15",
6060
"@types/less": "^3.0.0",
61-
"@types/lodash": "^4.14.132",
61+
"@types/lodash": "^4.14.136",
6262
"@types/node": "^10.0.0",
6363
"@types/sass": "^1.16.0",
64-
"husky": "^2.3.0",
64+
"husky": "^2.7.0",
6565
"jest": "^24.8.0",
66-
"prettier": "^1.17.1",
67-
"pretty-quick": "^1.11.0",
66+
"prettier": "^1.18.2",
67+
"pretty-quick": "^1.11.1",
6868
"ts-jest": "^24.0.2",
69-
"tslint": "^5.16.0",
70-
"typescript": "^3.4.5"
69+
"tslint": "^5.18.0",
70+
"typescript": "^3.5.3"
7171
},
7272
"peerDependencies": {
7373
"typescript": "^3.0.0"

src/helpers/__tests__/__snapshots__/cssSnapshots.test.ts.snap

+2
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,7 @@ exports[`utils / cssSnapshots with file 'test.module.scss' createExports should
107107
'section-7': string;
108108
'section-8': string;
109109
'section-9': string;
110+
'class-with-mixin': string;
110111
};
111112
export default classes;
112113
"
@@ -115,6 +116,7 @@ export default classes;
115116
exports[`utils / cssSnapshots with file 'test.module.scss' getClasses should return an object matching expected CSS 1`] = `
116117
Object {
117118
"child-class": "file__child-class---1QWYM",
119+
"class-with-mixin": "file__class-with-mixin---39EVY",
118120
"const": "file__const---MIe_0",
119121
"default": "file__default---2RWlj",
120122
"local-class": "file__local-class---3SW3k",

src/helpers/__tests__/cssSnapshots.test.ts

+3-6
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,11 @@ const testFileNames = [
1414
describe('utils / cssSnapshots', () => {
1515
testFileNames.forEach((fileName) => {
1616
let classes: IICSSExports;
17-
const fileType = getFileType(fileName);
18-
const testFile = readFileSync(
19-
join(__dirname, 'fixtures', fileName),
20-
'utf8',
21-
);
17+
const fullFileName = join(__dirname, 'fixtures', fileName);
18+
const testFile = readFileSync(fullFileName, 'utf8');
2219

2320
beforeAll(() => {
24-
classes = getClasses(testFile, fileType);
21+
classes = getClasses(testFile, fullFileName);
2522
});
2623

2724
describe(`with file '${fileName}'`, () => {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
@mixin set-margin($arg) {
2+
margin: $arg;
3+
}

src/helpers/__tests__/fixtures/test.module.css

+1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
}
1212

1313
.class_d {
14+
@mixin postcss-mixin;
1415
color: rebeccapurple;
1516
}
1617

src/helpers/__tests__/fixtures/test.module.scss

+6
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,12 @@ $color: rebeccapurple !default;
4444
}
4545
}
4646

47+
@import 'mixin';
48+
49+
.class-with-mixin {
50+
@include set-margin(0);
51+
}
52+
4753
// .commented-parent-class {
4854
// .commented-child-class
4955
// }

src/helpers/cssSnapshots.ts

+22-7
Original file line numberDiff line numberDiff line change
@@ -21,23 +21,39 @@ const flattenClassNames = (
2121
) => previousValue.concat(currentValue);
2222

2323
export const enum FileTypes {
24-
scss = 'scss',
24+
css = 'css',
2525
less = 'less',
26+
scss = 'scss',
2627
}
2728

28-
export const getFileType = (fileName: string) =>
29-
fileName.endsWith('less') ? FileTypes.less : FileTypes.scss;
29+
export const getFileType = (fileName: string) => {
30+
if (fileName.endsWith('.css')) return FileTypes.css;
31+
if (fileName.endsWith('.less')) return FileTypes.less;
32+
return FileTypes.scss;
33+
};
34+
35+
const getFilePath = (fileName: string) =>
36+
fileName.substring(0, fileName.lastIndexOf('/'));
3037

31-
export const getClasses = (css: string, fileType: FileTypes) => {
38+
export const getClasses = (css: string, fileName: string) => {
3239
try {
40+
const fileType = getFileType(fileName);
3341
let transformedCss = '';
3442

3543
if (fileType === FileTypes.less) {
3644
less.render(css, { asyncImport: true } as any, (err, output) => {
3745
transformedCss = output.css.toString();
3846
});
47+
} else if (fileType === FileTypes.scss) {
48+
const filePath = getFilePath(fileName);
49+
transformedCss = sass
50+
.renderSync({
51+
data: css,
52+
includePaths: [filePath],
53+
})
54+
.css.toString();
3955
} else {
40-
transformedCss = sass.renderSync({ data: css }).css.toString();
56+
transformedCss = css;
4157
}
4258

4359
const processedCss = processor.process(transformedCss);
@@ -81,8 +97,7 @@ export const getDtsSnapshot = (
8197
options: Options,
8298
) => {
8399
const css = scriptSnapshot.getText(0, scriptSnapshot.getLength());
84-
const fileType = getFileType(fileName);
85-
const classes = getClasses(css, fileType);
100+
const classes = getClasses(css, fileName);
86101
const dts = createExports(classes, options);
87102
return ts.ScriptSnapshot.fromString(dts);
88103
};

0 commit comments

Comments
 (0)