Skip to content

Releases: mizdra/css-modules-kit

Release 2026-06-14T09:32Z

14 Jun 09:32
Immutable release. Only release title and notes can be modified.
4296076

Choose a tag to compare

@css-modules-kit/codegen@1.3.0

Patch Changes

@css-modules-kit/core@1.3.0

Minor Changes

  • #415 e9315e4 - feat(core): support animation shorthand

  • #412 a247518 - refactor(core): parse @value with postcss-value-parser

    The @value parser is reimplemented on top of postcss-value-parser. Behavior for syntax supported by css-loader is unchanged.

    For syntax that css-loader does not support (where css-modules-kit does not guarantee a specific behavior), the result changed:

    • @value \\c: #000; and @value \'d: #000; are now parsed as a token declaration instead of reporting an error.
    • @value \31 e: #000; is now read as the token name \31 instead of e.
  • #409 4f59d0c - feat(core, ts-plugin): support composes: <name> from '<specifier>'

    Class names referenced via composes: foo from './other.module.css'; are now linked to the .foo {...} declaration in the referenced file. Go to Definition jumps from the reference to the declaration, Find All References lists reference sites across files, and Rename updates the declaration and every reference together.

    Two diagnostics are also emitted in the check phase:

    • Cannot import module '<specifier>' when the specifier cannot be resolved.
    • Module '<specifier>' has no exported token '<name>'. when the referenced file does not export the token.
  • #408 947d06d - feat(core, ts-plugin, eslint-plugin, stylelint-plugin): support composes property

    Class names referenced via composes: foo; are now linked back to the .foo {...} declaration. Go to Definition jumps from a reference to the declaration, Find All References lists every reference site, and Rename updates the declaration and every reference together. Space-separated names (composes: foo bar;), comma-separated names (composes: foo, bar;), and mixes of both are supported. composes: global(foo);, composes: foo from global;, and composes: foo from '<specifier>'; do not produce references (support for from '<specifier>' is planned).

    Two diagnostics are also emitted for invalid usage:

    • Parse phase: a from clause not followed by a quoted specifier or the global keyword is reported.
    • Check phase: references that resolve to neither a locally defined token nor an imported token are reported as Cannot find token '<name>'..

    The no-unused-class-names rule in eslint-plugin and stylelint-plugin now treats names referenced via composes from within the same CSS as used, so they are no longer reported as unused.

Patch Changes

  • #403 f40f511 - refactor: add u flag for configDirTemplate

@css-modules-kit/eslint-plugin@1.3.0

Patch Changes

  • #408 947d06d - feat(core, ts-plugin, eslint-plugin, stylelint-plugin): support composes property

    Class names referenced via composes: foo; are now linked back to the .foo {...} declaration. Go to Definition jumps from a reference to the declaration, Find All References lists every reference site, and Rename updates the declaration and every reference together. Space-separated names (composes: foo bar;), comma-separated names (composes: foo, bar;), and mixes of both are supported. composes: global(foo);, composes: foo from global;, and composes: foo from '<specifier>'; do not produce references (support for from '<specifier>' is planned).

    Two diagnostics are also emitted for invalid usage:

    • Parse phase: a from clause not followed by a quoted specifier or the global keyword is reported.
    • Check phase: references that resolve to neither a locally defined token nor an imported token are reported as Cannot find token '<name>'..

    The no-unused-class-names rule in eslint-plugin and stylelint-plugin now treats names referenced via composes from within the same CSS as used, so they are no longer reported as unused.

  • Updated dependencies [e9315e4, a247518, 4f59d0c, 947d06d, f40f511]:

    • @css-modules-kit/core@1.3.0

@css-modules-kit/stylelint-plugin@1.3.0

Patch Changes

  • #408 947d06d - feat(core, ts-plugin, eslint-plugin, stylelint-plugin): support composes property

    Class names referenced via composes: foo; are now linked back to the .foo {...} declaration. Go to Definition jumps from a reference to the declaration, Find All References lists every reference site, and Rename updates the declaration and every reference together. Space-separated names (composes: foo bar;), comma-separated names (composes: foo, bar;), and mixes of both are supported. composes: global(foo);, composes: foo from global;, and composes: foo from '<specifier>'; do not produce references (support for from '<specifier>' is planned).

    Two diagnostics are also emitted for invalid usage:

    • Parse phase: a from clause not followed by a quoted specifier or the global keyword is reported.
    • Check phase: references that resolve to neither a locally defined token nor an imported token are reported as Cannot find token '<name>'..

    The no-unused-class-names rule in eslint-plugin and stylelint-plugin now treats names referenced via composes from within the same CSS as used, so they are no longer reported as unused.

  • Updated dependencies [e9315e4, a247518, 4f59d0c, 947d06d, f40f511]:

    • @css-modules-kit/core@1.3.0

@css-modules-kit/ts-plugin@1.3.0

Minor Changes

  • #409 4f59d0c - feat(core, ts-plugin): support composes: <name> from '<specifier>'

    Class names referenced via composes: foo from './other.module.css'; are now linked to the .foo {...} declaration in the referenced file. Go to Definition jumps from the reference to the declaration, Find All References lists reference sites across files, and Rename updates the declaration and every reference together.

    Two diagnostics are also emitted in the check phase:

    • Cannot import module '<specifier>' when the specifier cannot be resolved.
    • Module '<specifier>' has no exported token '<name>'. when the referenced file does not export the token.
  • #408 947d06d - feat(core, ts-plugin, eslint-plugin, stylelint-plugin): support composes property

    Class names referenced via composes: foo; are now linked back to the .foo {...} declaration. Go to Definition jumps from a reference to the declaration, Find All References lists every reference site, and Rename updates the declaration and every reference together. Space-separated names (composes: foo bar;), comma-separated names (composes: foo, bar;), and mixes of both are supported. composes: global(foo);, composes: foo from global;, and composes: foo from '<specifier>'; do not produce references (support for from '<specifier>' is planned).

    Two diagnostics are also emitted for invalid usage:

    • Parse phase: a from clause not followed by a quoted specifier or the global keyword is reported.
    • Check phase: references that resolve to neither a locally defined token nor an imported token are reported as Cannot find token '<name>'..

    The no-unused-class-names ru...

Read more

Release 2026-05-11T16:03Z

11 May 16:03
Immutable release. Only release title and notes can be modified.
bf1881c

Choose a tag to compare

Notable Changes

Support animation-name property (#389)

Support resolving references from animation-name: foo; to @keyframes foo {...}.

2026-05-10.1.39.16.mov

@css-modules-kit/codegen@1.2.0

Patch Changes

  • #399 f758c23 - refactor(core, codegen): do not emit token reference statements in generated .d.ts files

    Statements like styles['a_1']; and __self['a_1']; (emitted for animation-name references to @keyframes) used to appear in the .d.ts files written by codegen. These statements exist solely to wire up editor language features such as Go to Definition, Find All References, and Rename, and are not needed at compile time. The visible types exported by these files are unchanged, but codegen output is no longer cluttered with statements that look meaningless to a reader of the type definition file. The statements are still emitted by the TS plugin, where the language features are actually served.

  • Updated dependencies [f758c23, 2d672a6, bf028b1, ab602bf, feff13f, d0c1750]:

    • @css-modules-kit/core@1.2.0

@css-modules-kit/core@1.2.0

Minor Changes

  • #389 ab602bf - feat(core, ts-plugin, eslint-plugin, stylelint-plugin): support animation-name property

    animation-name: foo; is now linked back to the @keyframes foo {...} declaration. Go to Definition jumps from a reference to the declaration, Find All References lists every reference site, and Rename updates the declaration and every reference together. Comma-separated names (animation-name: foo, bar;), local() / global() notation, and vendor prefixes (-webkit-animation-name) are all supported. References to @keyframes defined in another file via @import are resolved as well.

    Two diagnostics are also emitted for invalid usage:

    • Parse phase: malformed local(...) calls (empty, multiple identifiers, or non-identifier nodes such as a nested function) are reported.
    • Check phase: token references that resolve to neither a locally defined token nor an imported token are reported as Cannot find token '<name>'..

    The no-unused-class-names rule in eslint-plugin and stylelint-plugin now treats names referenced via animation-name from within the same CSS as used, so they are no longer reported as unused.

Patch Changes

  • #399 f758c23 - refactor(core, codegen): do not emit token reference statements in generated .d.ts files

    Statements like styles['a_1']; and __self['a_1']; (emitted for animation-name references to @keyframes) used to appear in the .d.ts files written by codegen. These statements exist solely to wire up editor language features such as Go to Definition, Find All References, and Rename, and are not needed at compile time. The visible types exported by these files are unchanged, but codegen output is no longer cluttered with statements that look meaningless to a reader of the type definition file. The statements are still emitted by the TS plugin, where the language features are actually served.

  • #395 2d672a6 - fix(core): make default-export styles type-readonly via as const

    The default-export .d.ts previously emitted each token as '<name>': '' as readonly string,. The readonly modifier is only valid on array/tuple types, so this was a TypeScript syntax error silently suppressed by @ts-nocheckstyles was not actually readonly and writes like styles.foo = '...' were accepted by tsc. The generator now emits '<name>': '' as string, per token and closes the object literal with } as const, so typeof styles is Readonly<{ ... }> and writes to it are now correctly reported as type errors.

  • #386 bf028b1 - fix(core): use the alias name when collecting re-exported tokens via @value ... as ... from ...

    createExportBuilder was recording the source-side name (entry.name) into the importing module's ExportRecord instead of the alias the importing module actually exposes (entry.localName). This caused downstream consumers to look up the wrong name, e.g. checkCSSModule would emit a false "no exported token" diagnostic for an aliased token re-imported from another module.

  • #390 feff13f - fix(core): ensure the .d.ts generated in named exports mode is always treated as a module

    When a CSS Module file had no exported tokens or importers (e.g. an empty file), the generated .d.ts in named exports mode contained no top-level export/import, so TypeScript treated it as a global script and reported TS2306 on import * as styles from './a.module.css'. The generator now appends export {}; whenever it does not emit any other top-level export / import, so the generated .d.ts is always treated as a module.

  • #384 d0c1750 - refactor(core): rename TokenImporter variants to ESTree-style names

    Rename the public types so they describe the abstract shape of the import
    (matching ESTree's ExportAllDeclaration / ExportNamedDeclaration)
    rather than the CSS syntax that produced them:

    • AtImportTokenImporterAllTokenImporter (type: 'all')
    • AtValueTokenImporterNamedTokenImporter (type: 'named')
    • AtValueTokenImporterValueNamedTokenImporterEntry
    • NamedTokenImporter.valuesNamedTokenImporter.entries

    The core package is an internal building block — end users interact
    with CSS Modules Kit through ts-plugin, codegen, eslint-plugin,
    and stylelint-plugin, none of which reference the renamed names. This
    change is therefore released as a patch.

@css-modules-kit/eslint-plugin@1.2.0

Patch Changes

  • #389 ab602bf - feat(core, ts-plugin, eslint-plugin, stylelint-plugin): support animation-name property

    animation-name: foo; is now linked back to the @keyframes foo {...} declaration. Go to Definition jumps from a reference to the declaration, Find All References lists every reference site, and Rename updates the declaration and every reference together. Comma-separated names (animation-name: foo, bar;), local() / global() notation, and vendor prefixes (-webkit-animation-name) are all supported. References to @keyframes defined in another file via @import are resolved as well.

    Two diagnostics are also emitted for invalid usage:

    • Parse phase: malformed local(...) calls (empty, multiple identifiers, or non-identifier nodes such as a nested function) are reported.
    • Check phase: token references that resolve to neither a locally defined token nor an imported token are reported as Cannot find token '<name>'..

    The no-unused-class-names rule in eslint-plugin and stylelint-plugin now treats names referenced via animation-name from within the same CSS as used, so they are no longer reported as unused.

  • Updated dependencies [f758c23, 2d672a6, bf028b1, ab602bf, feff13f, d0c1750]:

    • @css-modules-kit/core@1.2.0

@css-modules-kit/stylelint-plugin@1.2.0

Patch Changes

  • #389 ab602bf - feat(core, ts-plugin, eslint-plugin, stylelint-plugin): support animation-name property

    animation-name: foo; is now linked back to the @keyframes foo {...} declaration. Go to Definition jumps from a reference to the declaration, Find All References lists every reference site, and Rename updates the declaration...

Read more

Release 2026-04-29T16:24Z

29 Apr 16:24
Immutable release. Only release title and notes can be modified.
8c7df39

Choose a tag to compare

@css-modules-kit/codegen@1.1.0

Patch Changes

@css-modules-kit/core@1.1.0

Minor Changes

  • #367 cb89044 - feat(core, ts-plugin): support non-JavaScript identifier token in named export

Patch Changes

  • #373 3da75ab - fix(core): resolve relative dtsOutDir against defining tsconfig directory

  • #363 efe7e30 - refactor(core, ts-plugin): replace secondaryMapping with CustomSourceMap

@css-modules-kit/eslint-plugin@1.1.0

Patch Changes

@css-modules-kit/stylelint-plugin@1.1.0

Patch Changes

@css-modules-kit/ts-plugin@1.1.0

Minor Changes

  • #367 cb89044 - feat(core, ts-plugin): support non-JavaScript identifier token in named export

Patch Changes

  • #363 efe7e30 - refactor(core, ts-plugin): replace secondaryMapping with CustomSourceMap

  • Updated dependencies [cb89044, 3da75ab, efe7e30]:

    • @css-modules-kit/core@1.1.0

css-modules-kit-vscode@1.1.0

Patch Changes

  • Updated dependencies [cb89044, efe7e30]:
    • @css-modules-kit/ts-plugin@1.1.0

Release 2026-04-22T14:08Z

22 Apr 14:08
Immutable release. Only release title and notes can be modified.
1614b39

Choose a tag to compare

Notable Changes

Bump to v1.0.0

We have bumped the version to 1.0.0. This was actually unintended—it happened because Claude Code committed a changeset tagged with major 😅. However, CSS Modules Kit has been stable for a while now, so we're keeping the versioning as is.

Require cmkOptions.enabled: true to activate CSS Modules Kit

ts-plugin and codegen are now only enabled when cmkOptions.enabled is explicitly set to true in tsconfig.json.
Previously they worked even without the option. See #289 for background.

@css-modules-kit/codegen@1.0.0

Major Changes

  • #357 cc5f4c8 - feat(core, ts-plugin, codegen)!: require cmkOptions.enabled: true to activate

    ts-plugin and codegen are now only enabled when cmkOptions.enabled is explicitly set to true in tsconfig.json.
    Previously they worked even without the option. See #289 for background.

  • #362 e1f2983 - Drop Node.js 20 support and require Node.js >=22.12.0.

Patch Changes

@css-modules-kit/core@1.0.0

Major Changes

  • #357 cc5f4c8 - feat(core, ts-plugin, codegen)!: require cmkOptions.enabled: true to activate

    ts-plugin and codegen are now only enabled when cmkOptions.enabled is explicitly set to true in tsconfig.json.
    Previously they worked even without the option. See #289 for background.

  • #362 e1f2983 - Drop Node.js 20 support and require Node.js >=22.12.0.

Minor Changes

Patch Changes

  • #351 0f570c1 - fix(core, codegen): support TypeScript v6

  • #350 f615cce - deps(core): update postcss and postcss-selector-parser

@css-modules-kit/eslint-plugin@1.0.0

Major Changes

  • #362 e1f2983 - Drop Node.js 20 support and require Node.js >=22.12.0.

Patch Changes

@css-modules-kit/stylelint-plugin@1.0.0

Major Changes

  • #362 e1f2983 - Drop Node.js 20 support and require Node.js >=22.12.0.

Patch Changes

@css-modules-kit/ts-plugin@1.0.0

Major Changes

  • #357 cc5f4c8 - feat(core, ts-plugin, codegen)!: require cmkOptions.enabled: true to activate

    ts-plugin and codegen are now only enabled when cmkOptions.enabled is explicitly set to true in tsconfig.json.
    Previously they worked even without the option. See #289 for background.

  • #362 e1f2983 - Drop Node.js 20 support and require Node.js >=22.12.0.

Patch Changes

css-modules-kit-vscode@1.0.0

Patch Changes

  • #349 7b1256e - chore(vscode): bundle ts-plugin dependencies instead of installing at publish time

  • Updated dependencies [cc5f4c8, e1f2983, ea5dfc9]:

    • @css-modules-kit/ts-plugin@1.0.0

Release 2026-02-23T13:25Z

23 Feb 13:25
Immutable release. Only release title and notes can be modified.
6b82694

Choose a tag to compare

@css-modules-kit/codegen@0.10.0

Patch Changes

@css-modules-kit/core@0.10.0

Patch Changes

@css-modules-kit/eslint-plugin@0.10.0

Patch Changes

@css-modules-kit/stylelint-plugin@0.10.0

Minor Changes

Patch Changes

@css-modules-kit/ts-plugin@0.10.0

Patch Changes

  • #337 b857cc8 - docs(ts-plugin): improve Neovim/Emacs setup guide in README

  • #343 727f295 - chore: migrate from ESLint to oxlint

  • #341 70660f4 - chore: migrate from Prettier to oxfmt

  • Updated dependencies [727f295, 70660f4]:

    • @css-modules-kit/core@0.10.0

css-modules-kit-vscode@0.10.0

Patch Changes

Release 2026-02-07T14:32Z

07 Feb 14:32
Immutable release. Only release title and notes can be modified.
634fa56

Choose a tag to compare

Notable Changes

Support non-JavaScript identifier token in default export (#330)

Previously, CSS Modules Kit did not allow tokens with names that were invalid as JavaScript identifiers. For example, class selectors containing hyphens, such as .a-1 {...}, could not be used.

Starting with this version, this is now permitted only when cmkOptions.namedExports is set to false. You can reference class selectors with hyphens, like styles['a-1'].

However, note that these tokens remain disallowed when cmkOptions.namedExports is set to true. Additionally, case conversion is not supported (meaning .foo-bar {...} will not be exported as fooBar). We hope to relax these restrictions in the future, though the technical feasibility remains unclear.

@apple-yagi created a proof of concept in #309 and #320, demonstrating that this feature is feasible. He also provided key ideas for implementing this feature, specifically the concept of multiple mapping objects, alongside me (ref: #309 (comment)). Thank you!

Ignore node_modules and .git directories in watch mode (#335)

We fixed an issue where node_modules and .git were watched in watch mode, causing EMFILE errors.

@css-modules-kit/codegen@0.9.0

Patch Changes

  • #335 01e89eb - fix(codegen): ignore node_modules and .git directories in watch mode to prevent EMFILE errors

  • Updated dependencies [d89f583, 9b9aeae, 9ca81da, 61f228a]:

    • @css-modules-kit/core@0.9.0

@css-modules-kit/core@0.9.0

Minor Changes

  • #330 d89f583 - feat(core, ts-plugin): support non-JavaScript identifier token in default export

Patch Changes

  • #333 9b9aeae - fix(core): use matchAll instead of exec in findUsedTokenNames to avoid potential lastIndex state issues

  • #334 9ca81da - fix(core): support styles['foo'] and styles["foo"] bracket notation in findUsedTokenNames

  • #326 61f228a - fix(core): fix the incorrect position of the diagnostics for the escaped class selectors

@css-modules-kit/eslint-plugin@0.9.0

Patch Changes

@css-modules-kit/stylelint-plugin@0.9.0

Patch Changes

@css-modules-kit/ts-plugin@0.9.0

Minor Changes

  • #330 d89f583 - feat(core, ts-plugin): support non-JavaScript identifier token in default export

Patch Changes

css-modules-kit-vscode@0.9.0

Patch Changes

  • Updated dependencies [d89f583, 6115ee6]:
    • @css-modules-kit/ts-plugin@0.9.0

Release 2026-01-25T10:42Z

25 Jan 10:42
Immutable release. Only release title and notes can be modified.
ba39c97

Choose a tag to compare

Notable Changes

The package versioning rules are changed (#318)

We have changed the package versioning rules. Previously, only packages that had changes were bumped. However, going forward, if any of core, codegen, ts-plugin, stylelint-plugin, or eslint-plugin has changes, all of them will be bumped. Additionally, they will be released with the same version number.

For the detailed background, see #318.

@css-modules-kit/codegen@0.8.1

Patch Changes

@css-modules-kit/core@0.8.1

Patch Changes

  • #306 61cb7a5 - chore: disable complexity and max-params ESLint rules

  • #311 df01b95 - fix(core): fix the issue where *.css import resolution fails

  • #317 707df0c - fix(core): remove unnecessary mappings

  • #318 ece6603 - chore: synchronize versions across all packages (except zed)

@css-modules-kit/eslint-plugin@0.8.1

Patch Changes

@css-modules-kit/stylelint-plugin@0.8.1

Patch Changes

@css-modules-kit/ts-plugin@0.8.1

Patch Changes

css-modules-kit-vscode@0.8.1

Patch Changes

  • #318 ece6603 - chore: synchronize versions across all packages (except zed)

  • Updated dependencies [61cb7a5, f5a008a, ece6603]:

    • @css-modules-kit/ts-plugin@0.8.1

Release 2026-01-13T01:47Z

13 Jan 01:47
Immutable release. Only release title and notes can be modified.
a998b29

Choose a tag to compare

Notable Changes

Add --preserveWatchOutput option (#288)

An option has been added to prevent the terminal from being cleared each time a file change is detected in watch mode.

Change how to resolve specifiers (#296, #298 #297)

The resolution method for specifiers in @import '<specifier>' and @value ... from '<specifier>' has been modified. For detailed information, please refer to issues #296, #298, and #297.

As a result, @import statements that previously did not produce errors may now generate the diagnostic message "Cannot import module". To avoid this issue, please refer to the instructions in the "Limitations" section.

Prevent tsserver from crashing when adding new files (#305)

Previously, tsserver would crash when new files were added. This issue affected projects not using CSS Modules as well, meaning many users may have experienced this problem.

This issue has been resolved in #305.

Add cmkOptions.enabled (#290, #299)

Currently, the language features of ts-plugin are enabled automatically. This means they are enabled in all TypeScript projects. Consequently, Code Actions for CSS Modules appear in projects not using CSS Modules Kit, such as the following:

Image

This can be annoying for some users.

We have now added the cmkOptions.enabled configuration option, which allows disabling both the ts-plugin and codegen. When cmkOptions.enabled is omitted, codegen will issue a warning.

Currently, omitting cmkOptions.enabled still enables both the ts-plugin and codegen, but this behavior may change in the future, requiring explicit setting to true for functionality to continue.

@css-modules-kit/codegen@0.8.0

Minor Changes

  • #288 89f11a5 - feat: add --preserveWatchOutput option

  • #290 d75f75f - feat: exit with error when cmkOptions.enabled is false

  • #302 32ecdc2 - feat!: include types in .d.ts files for unresolved or unmatched module imports

  • #290 d75f75f - feat: warn when cmkOptions.enabled is not set

  • #286 352f53c - chore: migrate from CJS to ESM

Patch Changes

@css-modules-kit/core@0.8.0

Minor Changes

  • #296 b5cdd4a - feat!: remove unused isAbsolute

  • #302 32ecdc2 - feat!: include types in .d.ts files for unresolved or unmatched module imports

  • #295 4318015 - refactor: consolidate checkCSSModule arguments into CheckerArgs

  • #286 352f53c - chore: migrate from CJS to ESM

Patch Changes

  • #297 673b45a - fix: prevent URL specifiers from being resolved by import aliases

  • #298 92d7918 - fix: fix .d.ts generation regression from #296

  • #303 0128985 - fix: prevent styles from becoming any type when importing unresolvable or unmatched modules

  • #296 b5cdd4a - fix: report "Cannot import module" diagnostic for unresolvable bare specifiers

  • #296 b5cdd4a - fix: return undefined for non-existent CSS module paths in resolver

@css-modules-kit/eslint-plugin@0.4.0

Minor Changes

Patch Changes

@css-modules-kit/stylelint-plugin@0.5.0

Minor Changes

Patch Changes

@css-modules-kit/ts-plugin@0.8.0

Minor Changes

  • #299 4c604fe - feat: disable ts-plugin if cmkConfig.enabled is false

  • #286 352f53c - chore: migrate modules other than entry points from CJS to ESM

  • #302 32ecdc2 - feat!: include types in .d.ts files for unresolved or unmatched module imports

Patch Changes

Read more

Release 2025-12-21T09:41Z

21 Dec 09:41
Immutable release. Only release title and notes can be modified.
0bf647b

Choose a tag to compare

Notable Changes

Watch Mode coming to cmk command (#278)

Previously, the cmk command lacked a watch mode feature. As a result, during development, the contents of *.module.css.d.ts files could become outdated.

This typically isn't problematic because tsserver performs type checking based on *.module.css content rather than *.module.css.d.ts. However, tools like the ESLint Language Server perform type checking based on *.module.css.d.ts. Consequently, this leads to inconsistent type checking results between ESLint Language Server and tsserver, which can confuse users.

To address this issue, we have added a watch mode feature to the cmk command, available via cmk --watch. In watch mode, the tool watches changes to *.module.css files and automatically generates corresponding *.module.css.d.ts files whenever changes are detected.

2025-12-21.19.26.32.mov

Enable cmkOptions completion in tsconfig.json for VS Code (#277)

cmkOptions is now supported for completion. Thanks to @Gehbt for implementing this feature!

image

@css-modules-kit/codegen@0.7.0

Minor Changes

  • #269 60b7515 - feat: generate .d.ts files even if syntax or semantic errors are found

  • #278 f33b0a6 - feat: add --watch option

  • #272 c36be81 - feat!: report an error diagnostic when no files found by include/exclude pattern

Patch Changes

@css-modules-kit/core@0.7.0

Minor Changes

  • #273 d1c2051 - refactor: rename from createDts to generateDts

  • #269 60b7515 - feat: generate .d.ts files even if syntax or semantic errors are found

  • #262 4d661a1 - feat: add wildcardDirectories in CMKConfig

  • #274 87e1aef - refactor: include diagnostics within CSSModule object

  • #272 c36be81 - feat!: report an error diagnostic when no files found by include/exclude pattern

@css-modules-kit/eslint-plugin@0.3.1

Patch Changes

@css-modules-kit/stylelint-plugin@0.4.1

Patch Changes

@css-modules-kit/ts-plugin@0.7.0

Minor Changes

  • #269 60b7515 - feat: generate .d.ts files even if syntax or semantic errors are found

  • #272 c36be81 - feat!: report an error diagnostic when no files found by include/exclude pattern

Patch Changes

css-modules-kit-zed@0.1.1

Patch Changes

css-modules-kit-vscode@0.4.0

Minor Changes

Patch Changes

Release 2025-09-03T01:27Z

03 Sep 01:27
Immutable release. Only release title and notes can be modified.
a5c42d4

Choose a tag to compare

css-modules-kit-vscode@0.3.0

Minor Changes

  • e669052: deps: update bundled ts-plugin version