Skip to content

Commit 11b12d1

Browse files
committed
Fix destructuring imports with common js
1 parent aca82f2 commit 11b12d1

File tree

5 files changed

+40
-15
lines changed

5 files changed

+40
-15
lines changed

CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
# Svelte preprocess CSS Modules, changelog
22

3+
## 2.2.1 (May 26, 2022)
4+
5+
### Fixes
6+
7+
- Destructuring import with commonjs
8+
- Emphasize on named imports instead of default
9+
310
## 2.2.0 (Apr 6, 2022)
411

512
### Features

README.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -745,7 +745,7 @@ To be used with the plugin [`rollup-plugin-svelte`](https://github.com/sveltejs/
745745

746746
```js
747747
import svelte from 'rollup-plugin-svelte';
748-
import cssModules from 'svelte-preprocess-cssmodules';
748+
import { cssModules } from 'svelte-preprocess-cssmodules';
749749

750750
export default {
751751
...
@@ -765,7 +765,7 @@ export default {
765765
To be used with the loader [`svelte-loader`](https://github.com/sveltejs/svelte-loader).
766766

767767
```js
768-
const cssModules = require('svelte-preprocess-cssmodules');
768+
const { cssModules } = require('svelte-preprocess-cssmodules');
769769

770770
module.exports = {
771771
...
@@ -799,7 +799,7 @@ in order to work.
799799
```js
800800
// svelte.config.js
801801

802-
import cssModules from 'svelte-preprocess-cssmodules';
802+
import { cssModules } from 'svelte-preprocess-cssmodules';
803803

804804
const config = {
805805
...
@@ -818,8 +818,8 @@ Svelte is running the preprocessors by phases, going through all *markup* first,
818818
The CSS Modules preprocessor is doing all its work on the markup phase via `svelte.parse()` which requires the compoment to be a valid standard svelte component (using vanilla js and vanilla css). if any other code (such as typescript or sass) is encountered, an error will be thrown.
819819

820820
```js
821-
const { typescript, scss } = require('svelte-preprocess');
822-
const { cssModules } = require('svelte-preprocess-cssmodules');
821+
import { typescript, scss } from 'svelte-preprocess';
822+
import { cssModules } from 'svelte-preprocess-cssmodules';
823823

824824
...
825825
// svelte config: NOT working!
@@ -834,8 +834,8 @@ const { cssModules } = require('svelte-preprocess-cssmodules');
834834
As it is extremely common for developers to use `svelte-preprocess` in their application, CSS Modules provides a small utility to easily be incorporated with. `linearPreprocess` will ensure a linear process with the list of preprocessors.
835835

836836
```js
837-
const { typescript, scss } = require('svelte-preprocess');
838-
const { cssModules, linearPreprocess } = require('svelte-preprocess-cssmodules');
837+
import { typescript, scss } from 'svelte-preprocess';
838+
import { cssModules, linearPreprocess } from 'svelte-preprocess-cssmodules';
839839

840840
...
841841
// svelte config: OK, processing one after another!

example/webpack/webpack.config.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
const path = require('path');
2-
const cssModules = require('../../');
2+
const { cssModules } = require('../../');
33

44
const isProduction = process.env.NODE_ENV === 'production';
55

src/index.ts

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
/* eslint-disable no-multi-assign */
12
import { parse, preprocess } from 'svelte/compiler';
23
import type { Ast } from 'svelte/types/compiler/interfaces.d';
34
import type {
@@ -106,7 +107,7 @@ const markup: MarkupPreprocessor = async ({ content, filename }) => {
106107
* @param options
107108
* @returns the css modules preprocessors
108109
*/
109-
export const cssModules = (options: Partial<PluginOptions>): PreprocessorGroup => {
110+
const cssModulesPreprocessor = (options: Partial<PluginOptions>): PreprocessorGroup => {
110111
pluginOptions = {
111112
...defaultOptions(),
112113
...options,
@@ -126,7 +127,7 @@ export const cssModules = (options: Partial<PluginOptions>): PreprocessorGroup =
126127
* @param preprocessors list of preprocessors
127128
* @returns group of `markup` preprocessors
128129
*/
129-
export const linearPreprocess = (preprocessors: PreprocessorGroup[]): PreprocessorGroup[] => {
130+
const linearPreprocessor = (preprocessors: PreprocessorGroup[]): PreprocessorGroup[] => {
130131
return preprocessors.map((p) => {
131132
return !p.script && !p.style
132133
? p
@@ -138,4 +139,12 @@ export const linearPreprocess = (preprocessors: PreprocessorGroup[]): Preprocess
138139
});
139140
};
140141

141-
export default module.exports = cssModules;
142+
// export default cssModulesPreprocessor;
143+
export default exports = module.exports = cssModulesPreprocessor;
144+
export const cssModules = cssModulesPreprocessor;
145+
export const linearPreprocess = linearPreprocessor;
146+
147+
// const cssModulesPreprocessor: any = module.exports = cssModules;
148+
// cssModulesPreprocessor.cssModules = cssModules;
149+
// cssModulesPreprocessor.linearPreprocess = linearPreprocess;
150+
// export default module.exports = cssModules;

tasks/parser.mjs

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,12 +35,21 @@ const parseDir = (dir) => {
3535
}
3636
} else if (
3737
node.type === 'ExportDefaultDeclaration'
38-
&& node.declaration?.left?.type === 'MemberExpression'
39-
&& node.declaration.left.object.name === 'module'
40-
&& node.declaration.left.property.name === 'exports'
38+
&& node.declaration.type === 'AssignmentExpression'
39+
&& node.declaration.right.type === 'AssignmentExpression'
40+
&& node.declaration.right.left.object.name === 'module'
41+
&& node.declaration.right.left.property.name === 'exports'
4142
) {
42-
magicContent.remove(node.declaration.left.start, node.declaration.right.start);
43+
magicContent.remove(node.declaration.left.start, node.declaration.right.right.start);
4344
}
45+
// } else if (
46+
// node.type === 'ExportDefaultDeclaration'
47+
// && node.declaration?.left?.type === 'MemberExpression'
48+
// && node.declaration.left.object.name === 'module'
49+
// && node.declaration.left.property.name === 'exports'
50+
// ) {
51+
// magicContent.remove(node.declaration.left.start, node.declaration.right.start);
52+
// }
4453
}
4554
});
4655
const mjsPathname = pathname.replace('/esm', '').replace('.js', '.mjs');

0 commit comments

Comments
 (0)