{"id":14990536,"url":"https://github.com/skovy/typed-scss-modules","last_synced_at":"2025-05-14T03:05:54.414Z","repository":{"id":34174540,"uuid":"170041458","full_name":"skovy/typed-scss-modules","owner":"skovy","description":"🎁 Generate type definitions (.d.ts) for CSS Modules using SCSS","archived":false,"fork":false,"pushed_at":"2024-06-26T17:05:15.000Z","size":4673,"stargazers_count":632,"open_issues_count":20,"forks_count":67,"subscribers_count":4,"default_branch":"master","last_synced_at":"2024-10-29T14:55:04.364Z","etag":null,"topics":["cli","css-modules","generator","sass","scss","scss-modules","typescript"],"latest_commit_sha":null,"homepage":"https://skovy.dev/generating-typescript-definitions-for-css-modules-using-sass/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/skovy.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-02-10T23:53:16.000Z","updated_at":"2024-10-26T09:54:06.000Z","dependencies_parsed_at":"2024-06-18T12:32:14.939Z","dependency_job_id":"9ace40db-058c-4197-af76-c463f5880c80","html_url":"https://github.com/skovy/typed-scss-modules","commit_stats":{"total_commits":283,"total_committers":27,"mean_commits":"10.481481481481481","dds":"0.41696113074204944","last_synced_commit":"c60f74e51977e48fae30e8b868d417c18e27b8be"},"previous_names":[],"tags_count":52,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/skovy%2Ftyped-scss-modules","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/skovy%2Ftyped-scss-modules/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/skovy%2Ftyped-scss-modules/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/skovy%2Ftyped-scss-modules/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/skovy","download_url":"https://codeload.github.com/skovy/typed-scss-modules/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248368655,"owners_count":21092420,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli","css-modules","generator","sass","scss","scss-modules","typescript"],"created_at":"2024-09-24T14:20:18.466Z","updated_at":"2025-04-11T09:36:55.263Z","avatar_url":"https://github.com/skovy.png","language":"TypeScript","readme":"# 🎁 typed-scss-modules\n\n[![npm version](https://img.shields.io/npm/v/typed-scss-modules.svg?style=flat)](https://www.npmjs.com/package/typed-scss-modules)\n\nGenerate TypeScript definitions (`.d.ts`) files for CSS Modules that are written in SCSS (`.scss`). Check out [this post to learn more](https://skovy.dev/generating-typescript-definitions-for-css-modules-using-sass/) about the rationale and inspiration behind this package.\n\n![Example](/docs/typed-scss-modules-example.gif)\n\nFor example, given the following SCSS:\n\n```scss\n@import \"variables\";\n\n.text {\n  color: $blue;\n\n  \u0026-highlighted {\n    color: $yellow;\n  }\n}\n```\n\nThe following type definitions will be generated:\n\n```typescript\nexport declare const text: string;\nexport declare const textHighlighted: string;\n```\n\n## Basic Usage\n\nInstall and run as a `devDependency`:\n\n```bash\nyarn add -D typed-scss-modules\nyarn typed-scss-modules src\n```\n\nOr, install globally:\n\n```bash\nyarn global add typed-scss-modules\ntyped-scss-modules src\n```\n\nOr, with npm:\n\n```bash\nnpm install -D typed-scss-modules\nnpx typed-scss-modules src\n```\n\n## CLI Options\n\nFor all possible commands, run `typed-scss-modules --help`.\n\nThe only required argument is the directory where all SCSS files are located. Running `typed-scss-modules src` will search for all files matching `src/**/*.scss`. This can be overridden by providing a [glob](https://github.com/isaacs/node-glob#glob-primer) pattern instead of a directory. For example, `typed-scss-modules src/*.scss`\n\n### `--watch` (`-w`)\n\n- **Type**: `boolean`\n- **Default**: `false`\n- **Example**: `typed-scss-modules src --watch`\n\nWatch for files that get added or are changed and generate the corresponding type definitions.\n\n### `--ignoreInitial`\n\n- **Type**: `boolean`\n- **Default**: `false`\n- **Example**: `typed-scss-modules src --watch --ignoreInitial`\n\nSkips the initial build when passing the watch flag. Use this when running concurrently with another watch, but the initial build should happen first. You would run without watch first, then start off the concurrent runs after.\n\n### `--ignore`\n\n- **Type**: `string[]`\n- **Default**: `[]`\n- **Example**: `typed-scss-modules src --watch --ignore \"**/secret.scss\"`\n\nA pattern or an array of glob patterns to exclude files that match and avoid generating type definitions.\n\n### `--includePaths` (`-i`)\n\n- **Type**: `string[]`\n- **Default**: `[]`\n- **Example**: `typed-scss-modules src --includePaths src/core`\n\nAn array of paths to look in to attempt to resolve your `@import` declarations. This example will search the `src/core` directory when resolving imports.\n\n### `--implementation`\n\n- **Type**: `\"node-sass\" | \"sass\"`\n- **Default**: If an option is passed, it will always use the provided package implementation. If an option is not passed, it will first check if `node-sass` is installed. If it is, it will be used. Otherwise, it will then check if `sass` is installed. If it is, it will be used. Finally, falling back to `node-sass` if all checks and validations fail.\n- **Example**: `typed-scss-modules src --implementation sass`\n\n### `--aliases` (`-a`)\n\n- **Type**: `object`\n- **Default**: `{}`\n- **Example**: `typed-scss-modules src --aliases.~some-alias src/core/variables`\n\nAn object of aliases to map to their corresponding paths. This example will replace any `@import '~alias'` with `@import 'src/core/variables'`.\n\n### `--aliasPrefixes` (`-p`)\n\n- **Type**: `object`\n- **Default**: `{}`\n- **Example**: `typed-scss-modules src --aliasPrefixes.~ node_modules/`\n\nAn object of prefix strings to replace with their corresponding paths. This example will replace any `@import '~bootstrap/lib/bootstrap'` with `@import 'node_modules/bootstrap/lib/bootstrap'`.\nThis matches the common use-case for importing scss files from node_modules when `sass-loader` will be used with `webpack` to compile the project.\n\n### `--nameFormat` (`-n`)\n\n- **Type**: `\"all\" | \"camel\" | \"kebab\" | \"param\" | \"snake\" | \"dashes\" | \"none\"`\n- **Default**: `\"camel\"`\n- **Examples**:\n  - `typed-scss-modules src --nameFormat camel`\n  - `typed-scss-modules src --nameFormat kebab --nameFormat dashes --exportType default`. In order to use multiple formatters, you must use `--exportType default`.\n\nThe class naming format to use when converting the classes to type definitions.\n\n- **all**: makes use of all formatters (except `all` and `none`) and converts all class names to their respective formats, with no duplication. In order to use this option, you must use `--exportType default`.\n- **camel**: convert all class names to camel-case, e.g. `App-Logo` =\u003e `appLogo`.\n- **kebab**/**param**: convert all class names to kebab/param case, e.g. `App-Logo` =\u003e `app-logo` (all lower case with '-' separators).\n- **dashes**: only convert class names containing dashes to camel-case, leave others alone, e.g. `App` =\u003e `App`, `App-Logo` =\u003e `appLogo`. Matches the webpack [css-loader camelCase 'dashesOnly'](https://github.com/webpack-contrib/css-loader#camelcase) option.\n- **snake**: convert all class names to lower case with underscores between words.\n- **none**: do not modify the given class names (you should use `--exportType default` when using `--nameFormat none` as any classes with a `-` in them are invalid as normal variable names).\n  Note: If you are using create-react-app v2.x and have NOT ejected, `--nameFormat none --exportType default` matches the class names that are generated in CRA's webpack's config.\n\n### `--listDifferent` (`-l`)\n\n- **Type**: `boolean`\n- **Default**: `false`\n- **Example**: `typed-scss-modules src --listDifferent`\n\nList any type definition files that are different than those that would be generated. If any are different, exit with a status code `1`.\n\n### `--exportType` (`-e`)\n\n- **Type**: `\"named\" | \"default\"`\n- **Default**: `\"named\"`\n- **Example**: `typed-scss-modules src --exportType default`\n\nThe export type to use when generating type definitions.\n\n#### `named`\n\nGiven the following SCSS:\n\n```scss\n.text {\n  color: blue;\n\n  \u0026-highlighted {\n    color: yellow;\n  }\n}\n```\n\nThe following type definitions will be generated:\n\n```typescript\nexport declare const text: string;\nexport declare const textHighlighted: string;\n```\n\n#### `default`\n\nGiven the following SCSS:\n\n```scss\n.text {\n  color: blue;\n\n  \u0026-highlighted {\n    color: yellow;\n  }\n}\n```\n\nThe following type definitions will be generated:\n\n```typescript\nexport type Styles = {\n  text: string;\n  textHighlighted: string;\n};\n\nexport type ClassNames = keyof Styles;\n\ndeclare const styles: Styles;\n\nexport default styles;\n```\n\nThis export type is useful when using kebab (param) cased class names since variables with a `-` are not valid variables and will produce invalid types or when a class name is a TypeScript keyword (eg: `while` or `delete`). Additionally, the `Styles` and `ClassNames` types are exported which can be useful for properly typing variables, functions, etc. when working with dynamic class names.\n\n### `--exportTypeName`\n\n- **Type**: `string`\n- **Default**: `\"ClassNames\"`\n- **Example**: `typed-scss-modules src --exportType default --exportTypeName ClassesType`\n\nCustomize the type name exported in the generated file when `--exportType` is set to `\"default\"`.\nOnly default exports are affected by this command. This example will change the export type line to:\n\n```typescript\nexport type ClassesType = keyof Styles;\n```\n\n### `--exportTypeInterface`\n\n- **Type**: `string`\n- **Default**: `\"Styles\"`\n- **Example**: `typed-scss-modules src --exportType default --exportTypeInterface IStyles`\n\nCustomize the interface name exported in the generated file when `--exportType` is set to `\"default\"`.\nOnly default exports are affected by this command. This example will change the export interface line to:\n\n```typescript\nexport type IStyles = {\n  // ...\n};\n```\n\n### `--quoteType` (`-q`)\n\n- **Type**: `\"single\" | \"double\"`\n- **Default**: `\"single\"`\n- **Example**: `typed-scss-modules src --exportType default --quoteType double`\n\nSpecify a quote type to match your TypeScript configuration. Only default exports are affected by this command. This example will wrap class names with double quotes (\"). If [Prettier](https://prettier.io) is installed and configured in the project, it will be used and is likely to override the effect of this setting.\n\n### `--updateStaleOnly` (`-u`)\n\n- **Type**: `boolean`\n- **Default**: `false`\n- **Example**: `typed-scss-modules src --updateStaleOnly`\n\nOverwrite generated files only if the source file has more recent changes. This can be useful if you want to avoid extraneous file updates, which can cause watcher processes to trigger unnecessarily (e.g. `tsc --watch`). This is done by first checking if the generated file was modified more recently than the source file, and secondly by comparing the existing file contents to the generated file contents.\n\nCaveat: If a generated type definition file is updated manually, it won't be re-generated until the corresponding scss file is also updated.\n\n### `--logLevel` (`-L`)\n\n- **Type**: `\"verbose\" | \"error\" | \"info\" | \"silent\"`\n- **Default**: `\"verbose\"`\n- **Example**: `typed-scss-modules src --logLevel error`\n\nSets verbosity level of console output.\n\n#### `verbose`\n\nPrint all messages\n\n#### `error`\n\nPrint only errors\n\n#### `info`\n\nPrint only some messages\n\n#### `silent`\n\nPrint nothing\n\n### `--banner`\n\n- **Type**: `string`\n- **Default**: `undefined`\n- **Example**: `typed-scss-modules src --banner '// This is an example banner\\n'`\n\nWill prepend a string to the top of your output files\n\n```typescript\n// This is an example banner\nexport type Styles = {\n  // ...\n};\n```\n\n### `--outputFolder` (`-o`)\n\n- **Type**: `string`\n- **Default**: _none_\n- **Example**: `typed-scss-modules src --outputFolder __generated__`\n\nSet a relative folder to output the generated type definitions. Instead of writing the type definitions directly next to each SCSS module (sibling file), it will write to the output folder with the same path.\n\nIt will use the relative path to the SCSS module from where this tool is executed. This same path (including any directories) will be constructed in the output folder. This is important for this to work properly with TypeScript.\n\n**Important**: for this to work as expected the `tsconfig.json` needs to have [`rootDirs`](https://www.typescriptlang.org/tsconfig#rootDirs) added with the same output folder. This will allow TypeScript to pick up these type definitions and map them to the actual SCSS modules.\n\n```json\n{\n  \"compilerOptions\": {\n    \"rootDirs\": [\".\", \"__generated__\"]\n  }\n}\n```\n\n### `--additionalData` (`-d`)\n\n- **Type**: `string`\n- **Default**: _none_\n- **Example**: `typed-scss-modules src --additionalData '$global-var: green;'`\n\nPrepend the provided SCSS code before each file. This is useful for injecting globals into every file, such as adding an import to load global variables for each file.\n\n## Config options\n\nAll options above are also supported as a configuration file in the root of the project. The following configuration file names are supported:\n\n- `typed-scss-modules.config.ts`\n- `typed-scss-modules.config.js`\n\nThe file can provide either a named `config` export or a default export.\n\n```js\n// Example of a named export with some of the options sets.\nexport const config = {\n  banner: \"// customer banner\",\n  exportType: \"default\",\n  exportTypeName: \"TheClasses\",\n  logLevel: \"error\",\n};\n\n// Example of a default export with some of the options sets.\nexport default {\n  banner: \"// customer banner\",\n  exportType: \"default\",\n  exportTypeName: \"TheClasses\",\n  logLevel: \"error\",\n};\n```\n\n\u003e Note: the configuration options are the same as the CLI options without the leading dashes (`--`). Only the full option name is supported (not aliases) in the configuration file.\n\nCLI options will take precedence over configuration file options.\n\nIn addition to all CLI options, the following are options only available with the configuration file:\n\n### `importer`\n\n- **Type**: `Importer | Importer[]`\n- **Default**: _none_\n\nDefine a [single custom SASS importer or an array of SASS importers](https://github.com/sass/sass/blob/f355f602fc15f55b0a0a795ebe6eb819963e08a5/js-api-doc/legacy/importer.d.ts#L51-L149). This should only be necessary if custom SASS importers are already being used in the build process. This is used internally to implement `aliases` and `aliasPrefixes`.\n\nRefer to [`lib/sass/importer.ts`](/blob/master/lib/sass/importer.ts) for more details and the `node-sass` and `sass` importer type definitions.\n\n### `--allowArbitraryExtensions`\n\n- **Type**: `boolean`\n- **Default**: `false`\n- **Example**: `typed-scss-modules src --allowArbitraryExtensions`\n\nOutput filenames that will be compatible with the \"arbitrary file extensions\" feature that was introduced in TypeScript 5.0. See [the docs](https://www.typescriptlang.org/tsconfig#allowArbitraryExtensions) for more info.\n\nIn essence, the `*.scss.d.ts` extension now becomes `*.d.scss.ts` so that you can import SCSS modules in projects using ESM module resolution.\n\n## Examples\n\nFor examples of how this tool can be used and configured, see the `examples` directory:\n\n- [Basic example](/examples/basic)\n- [Default export example](/examples/default-export)\n- [Config file (with custom importer) example](/examples/config-file)\n\n## Contributors ✨\n\nThanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --\u003e\n\u003c!-- prettier-ignore-start --\u003e\n\u003c!-- markdownlint-disable --\u003e\n\u003ctable\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/dawnmist\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/5810277?v=4?s=100\" width=\"100px;\" alt=\"Janeene Beeforth\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eJaneene Beeforth\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/skovy/typed-scss-modules/issues?q=author%3Adawnmist\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e \u003ca href=\"https://github.com/skovy/typed-scss-modules/commits?author=dawnmist\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/skovy/typed-scss-modules/commits?author=dawnmist\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/ericbf\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/2483476?v=4?s=100\" width=\"100px;\" alt=\"Eric Ferreira\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eEric Ferreira\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/skovy/typed-scss-modules/commits?author=ericbf\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/skovy/typed-scss-modules/commits?author=ericbf\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/lkarmelo\"\u003e\u003cimg src=\"https://avatars2.githubusercontent.com/u/20393808?v=4?s=100\" width=\"100px;\" alt=\"Luis Lopes\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eLuis Lopes\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/skovy/typed-scss-modules/commits?author=lkarmelo\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://nostalg.io\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/5139752?v=4?s=100\" width=\"100px;\" alt=\"Josh Wedekind\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eJosh Wedekind\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/skovy/typed-scss-modules/commits?author=halfnibble\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/skovy/typed-scss-modules/commits?author=halfnibble\" title=\"Documentation\"\u003e📖\u003c/a\u003e \u003ca href=\"https://github.com/skovy/typed-scss-modules/commits?author=halfnibble\" title=\"Tests\"\u003e⚠️\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/peanutbother\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/6437182?v=4?s=100\" width=\"100px;\" alt=\"Jared Gesser\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eJared Gesser\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#ideas-peanutbother\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/raphael-leger\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/12732777?v=4?s=100\" width=\"100px;\" alt=\"Raphaël L\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eRaphaël L\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/skovy/typed-scss-modules/commits?author=raphael-leger\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"#ideas-raphael-leger\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://NickTheSick.com\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/1852538?v=4?s=100\" width=\"100px;\" alt=\"Nick Perez\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eNick Perez\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/skovy/typed-scss-modules/issues?q=author%3Anperez0111\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e \u003ca href=\"https://github.com/skovy/typed-scss-modules/commits?author=nperez0111\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://alander.org\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/1771462?v=4?s=100\" width=\"100px;\" alt=\"Even Alander\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eEven Alander\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/skovy/typed-scss-modules/commits?author=deificx\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/skovy/typed-scss-modules/commits?author=deificx\" title=\"Tests\"\u003e⚠️\u003c/a\u003e \u003ca href=\"#ideas-deificx\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"http://inkblotty.github.io\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/14206003?v=4?s=100\" width=\"100px;\" alt=\"Katie Foster\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eKatie Foster\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/skovy/typed-scss-modules/commits?author=inkblotty\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/skovy/typed-scss-modules/commits?author=inkblotty\" title=\"Tests\"\u003e⚠️\u003c/a\u003e \u003ca href=\"https://github.com/skovy/typed-scss-modules/commits?author=inkblotty\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/ccortezaguilera\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/10718803?v=4?s=100\" width=\"100px;\" alt=\"Carlos Aguilera\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eCarlos Aguilera\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/skovy/typed-scss-modules/commits?author=ccortezaguilera\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/craigrmccown\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/2373979?v=4?s=100\" width=\"100px;\" alt=\"Craig McCown\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eCraig McCown\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#ideas-craigrmccown\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e \u003ca href=\"https://github.com/skovy/typed-scss-modules/commits?author=craigrmccown\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/skovy/typed-scss-modules/commits?author=craigrmccown\" title=\"Tests\"\u003e⚠️\u003c/a\u003e \u003ca href=\"https://github.com/skovy/typed-scss-modules/commits?author=craigrmccown\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/capsuleman\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/34281913?v=4?s=100\" width=\"100px;\" alt=\"Guillaume Vagner\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eGuillaume Vagner\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/skovy/typed-scss-modules/commits?author=capsuleman\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/skovy/typed-scss-modules/commits?author=capsuleman\" title=\"Tests\"\u003e⚠️\u003c/a\u003e \u003ca href=\"https://github.com/skovy/typed-scss-modules/issues?q=author%3Acapsuleman\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://dev.to/srmagura\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/801549?v=4?s=100\" width=\"100px;\" alt=\"Sam Magura\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eSam Magura\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/skovy/typed-scss-modules/commits?author=srmagura\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/skovy/typed-scss-modules/commits?author=srmagura\" title=\"Tests\"\u003e⚠️\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/MichaelGregory\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/1435960?v=4?s=100\" width=\"100px;\" alt=\"Mike Gregory\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eMike Gregory\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/skovy/typed-scss-modules/issues?q=author%3AMichaelGregory\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e \u003ca href=\"https://github.com/skovy/typed-scss-modules/commits?author=MichaelGregory\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/skovy/typed-scss-modules/commits?author=MichaelGregory\" title=\"Tests\"\u003e⚠️\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\n\u003c!-- markdownlint-restore --\u003e\n\u003c!-- prettier-ignore-end --\u003e\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:END --\u003e\n\nThis project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!\n\n## Alternatives\n\nThis package was heavily influenced on [typed-css-modules](https://github.com/Quramy/typed-css-modules) which generates TypeScript definitions (`.d.ts`) files for CSS Modules that are written in CSS (`.css`).\n\nThis package is currently used as a CLI. There are also [packages that generate types as a webpack loader](https://github.com/Jimdo/typings-for-css-modules-loader).\n","funding_links":[],"categories":["TypeScript"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fskovy%2Ftyped-scss-modules","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fskovy%2Ftyped-scss-modules","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fskovy%2Ftyped-scss-modules/lists"}