All Projects → skovhus → Css Modules Flow Types

skovhus / Css Modules Flow Types

Licence: mit
Creates flow type definitions from CSS Modules files using Webpack loader or CLI 👾

Programming Languages

javascript
184084 projects - #8 most used programming language
flow
126 projects
flowtype
47 projects

Projects that are alternatives of or similar to Css Modules Flow Types

Css Modules Typescript Loader
Webpack loader to create TypeScript declarations for CSS Modules
Stars: ✭ 172 (+86.96%)
Mutual labels:  webpack, webpack-loader, css-modules
Svgr
Transform SVGs into React components 🦁
Stars: ✭ 8,263 (+8881.52%)
Mutual labels:  webpack, webpack-loader
Preact Boilerplate
🎸 Ready-to-rock Preact starter project, powered by Webpack.
Stars: ✭ 959 (+942.39%)
Mutual labels:  webpack, css-modules
React 5ddm
5d动漫,使用React,服务端渲染,接口(不开源)来自赞片CMS。仅供参考,交流群:14646823 欢迎加入
Stars: ✭ 50 (-45.65%)
Mutual labels:  webpack, css-modules
Stylefmt Loader
Webpack-loader. Fixes stylelint issues automatically while bundling with Webpack.
Stars: ✭ 24 (-73.91%)
Mutual labels:  webpack, webpack-loader
Flow Bin Loader
webpack loader for Flow
Stars: ✭ 11 (-88.04%)
Mutual labels:  webpack, webpack-loader
Ng Router Loader
Webpack loader for NgModule lazy loading using the angular router
Stars: ✭ 47 (-48.91%)
Mutual labels:  webpack, webpack-loader
Inline Style Loader
inline style loader for webpack
Stars: ✭ 16 (-82.61%)
Mutual labels:  webpack, webpack-loader
React Cool Starter
😎 🐣 A starter boilerplate for a universal web app with the best development experience and a focus on performance and best practices.
Stars: ✭ 1,083 (+1077.17%)
Mutual labels:  webpack, css-modules
Boilerplate Webpack React Es6 Cssmodule
a boilerplate for Webpack-React-ES6-CssModule project
Stars: ✭ 63 (-31.52%)
Mutual labels:  webpack, css-modules
Sketch Loader
Webpack loader for Sketch (+43) files
Stars: ✭ 69 (-25%)
Mutual labels:  webpack, webpack-loader
Nunjucks Isomorphic Loader
Nunjucks loader for webpack, supporting both javascript templating and generating static HTML files through the HtmlWebpackPlugin.
Stars: ✭ 17 (-81.52%)
Mutual labels:  webpack, webpack-loader
Node Addon Loader
A loader for node native addons
Stars: ✭ 17 (-81.52%)
Mutual labels:  webpack, webpack-loader
Thread Loader
Runs the following loaders in a worker pool
Stars: ✭ 945 (+927.17%)
Mutual labels:  webpack, webpack-loader
Braid Design System
Themeable design system for the SEEK Group
Stars: ✭ 888 (+865.22%)
Mutual labels:  webpack, css-modules
Bootstrap Loader
Load Bootstrap styles and scripts in your Webpack bundle
Stars: ✭ 1,038 (+1028.26%)
Mutual labels:  webpack, webpack-loader
Graphql Import Loader
Webpack loader for `graphql-import`
Stars: ✭ 84 (-8.7%)
Mutual labels:  webpack, webpack-loader
React Ssr Setup
React Starter Project with Webpack 4, Babel 7, TypeScript, CSS Modules, Server Side Rendering, i18n and some more niceties
Stars: ✭ 678 (+636.96%)
Mutual labels:  webpack, css-modules
React Css Components
Define React presentational components with CSS
Stars: ✭ 689 (+648.91%)
Mutual labels:  webpack, css-modules
React Boilerplate
Production-ready boilerplate for building universal web apps with React and Redux
Stars: ✭ 53 (-42.39%)
Mutual labels:  webpack, css-modules

css-modules-flow-types

MIT License PRs Welcome

CLI and Webpack loader for creating Flow type definitions based on CSS Modules files.

This gives you:

  • auto-completing for css files in most editors
  • flow type safety showing usage of non existing classes

Read more about the background in this blog post: "Type safe CSS Modules with Flow".

Example

Given the following css file using CSS Modules:

@value primary: red;

.myClass {
  color: primary;
}

css-modules-flow-types creates the following .flow file next to it:

// @flow
/* This file is automatically generated by css-modules-flow-types */
declare module.exports: {|
  +'myClass': string;
  +'primary': string;
|};

Usage (Webpack loader)

style-loader

The css-modules-flow-types-loader need to be added right after after style-loader:

$ npm install --dev css-modules-flow-types-loader
$ yarn add -D css-modules-flow-types-loader
{
  test: /\.css$/,  // or the file format you are using for your CSS Modules
  use: [
    'style-loader',
    'css-modules-flow-types-loader',
    // Other loaders like css-loader after this:
    {
      ...
    }
  ]
}

css-loader

For css-loader, css-modules-flow-types-loader needs to come before css-loader.

{
  test: /\.css$/,  // or the file format you are using for your CSS Modules
  use: [
    ExtractTextPlugin.extract({
      use: [
        'css-modules-flow-types-loader',
        {
          loader: 'css-loader',
          options: {}, // Any options for css-loader
        }
      ]
    })
  ]
}

Usage (CLI)

$ npm install --dev css-modules-flow-types-cli
$ yarn add -D css-modules-flow-types-cli

This installs the runner as css-modules-flow-types.

And run css-modules-flow-types <input directory or glob> command.

For example, if you have .css files under src directory, exec the following:

Running,

css-modules-flow-types src

Creates *.css.flow files next to all css files.

(your project root)
- src/
    | myStyle.css
    | myStyle.css.flow [created]

Troubleshooting

Support for other file extensions

To support .scss, .sass, .scss.module or similar files extensions you need to update your .flowconfig file with the following section:

[options]

; Extensions
module.file_ext=.js
module.file_ext=.jsx
module.file_ext=.json
module.file_ext=.css
module.file_ext=.scss
module.file_ext=.sass
module.file_ext=.scss.module
// other files used by flow

Without this Flow might error out with Required module not found.

Dynamic imports in Webpack

In some cases, attempting to load imports using dynamic references could choke webpack as it attempts to parse .flow files and encounters unknown syntax. The solution is to exclude .flow files with a webpackExclude directive in the import statement.

If you have an import like this:

import(
  /* webpackChunkName: "[request]" */
  `/Path/To/Components/${ getComponent()}`
)

Add webpackExclude like this:

import(
  /* webpackChunkName: "[request]" */
  /* webpackExclude: /\.flow$/ */
  `/Path/To/Components/${ getComponent()}`
)

Inspiration

Contributing

To get started, run:

yarn

When developing:

yarn verify # (runs lint and unit test) yarn lint yarn test yarn test:cov yarn test:watch

Deployment

On a new branch run:

yarn lerna version --no-git-tag-version

update the CHANGELOG.md file

git add -p git commit -m 'chore: bump version to x.x'

Once the branch is merged, the new version is deployed.

License

This software is released under the MIT License.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].