1.3.0 • Published 4 years ago

@nice-labs/typed-css-modules v1.3.0

Weekly downloads
94
License
MIT
Repository
github
Last release
4 years ago

@nice-labs/typed-css-modules

Creates TypeScript definition files from CSS Modules .css files.

If you have the following css,

/* locals.css */

.local {
}
.local-1 {
}

typed-css-modules creates the following .d.ts files from the above css:

/* locals.css.d.ts */
interface ILocals {
  'local': string;
  'local-1': string;
  [name: string]: string;
}
declare const locals: ILocals;
export = locals;

So, you can import CSS modules' class or variable into your TypeScript sources:

/* app.ts */
import * as locals from './locals.css';
console.log(locals.local);
console.log(locals['local-1']);

API

npm install -D @nice-labs/typed-css-modules
import * as fs from 'fs';
import { promisify } from 'util';
import { getModuleTokens, createTypeHint } from '@nice-labs/typed-css-modules';

const readFile = promisify(fs.readFile);

async function main() {
  const source = await readFile('locals.css');
  const tokens = await getModuleTokens(source); // ["local", "local-1"]
  const typeHint = createTypeHint(tokens); // d.ts file content
}

main();

Webpack loader integrated

// webpack.config.ts
import webpack from "webpack";

import * as TypedCSSModules from "@nice-labs/typed-css-modules";

const configure: webpack.Configuration = {
  module:{
    rules: [
      // ...
      {
        test: /\.css$/,
        use: [
          [TypedCSSModules.loader, {
            mode: "local", // "local" | "global" (default is "local")
            camelCase: false // boolean (default is false)
          }],
          require.resolve("postcss-loader"),
        ]
      }
      // ...
    ]
  }
};

export default configure;

Webpack plugin integrated

// webpack.config.ts
import TypedCSSModulesPlugin from '@nice-labs/typed-css-modules';

const configure: webpack.Configuration = {
  plugins: [
    // ...
    new TypedCSSModulesPlugin({
      mode: 'local', // "local" | "global" (default is "local")
      camelCase: false, // boolean (default is false)
      filesPattern: './src/**/*.css', // string | string[] (default is "./src/**/*.css")
    }),
    // ...
  ],
};

export default configure;

License

This software is released under the MIT License, see LICENSE.txt.

1.3.0

4 years ago

1.2.1

5 years ago

1.2.0-rc.1

5 years ago

1.1.2

5 years ago

1.1.1

5 years ago

1.2.0

5 years ago

1.1.0

5 years ago

1.0.6

6 years ago

1.0.5

6 years ago

1.0.4

6 years ago

1.0.3

6 years ago

1.0.2

6 years ago

1.0.1

6 years ago

1.0.0

6 years ago