Coder Social home page Coder Social logo

craco-antd's Introduction

Build Status Coverage Status MIT License


Community Maintained

We rely on your help to keep this project up to date and work with the latest versions of craco and react-scripts.

Before you send a PR, please check the following:

  • 100% test coverage
jest --coverage --testPathIgnorePatterns test-app
  • Code is formatted with Prettier
yarn prettier --write "**/*.{js,jsx,json,css,scss,html,md,yml}"
  • No ESLint warnings
yarn eslint --fix --ext .js lib/
  • No security vulnerabilities in any NPM packages
yarn audit

You are also welcome to add your GitHub username to the Contributors section at the bottom of this README. (optional)

Please don't send a pull request if it does not meet the above requirements

Pull requests will be ignored and closed if there is a failing build on Travis CI.


Craco Ant Design Plugin

This is a craco plugin that makes it easy to use the Ant Design UI library with create-react-app version >= 2.

Use react-app-rewired for create-react-app version 1.

craco-antd includes:

  • Less (provided by craco-less)
  • babel-plugin-import to only import the required CSS, instead of everything
  • An easy way to customize the theme. Set your custom variables in ./antd.customize.less

Supported Versions

The latest version of craco-antd is tested with:

  • react-scripts: ^5.0.0
  • @craco/craco: ^7.0.0
  • craco-less: ^3.0.0

Installation

First, follow the beginning of the Ant Design create-react-app Documentation to set up your app with Ant Design. (Stop before the "Advanced Guides" section, because this plugin handles all of that for you.)

Then, follow the craco Installation Instructions to install the craco package, create a craco.config.js file, and modify the scripts in your package.json.

Then install craco-antd and antd:

$ yarn add craco-antd antd

# OR

$ npm i -S craco-antd antd

craco-antd only has a "peer dependency" for antd >= 3.0.0. You should add antd to your own package.json and use a fixed version (e.g. 3.11.2). Be careful when upgrading antd, because unexpected changes could break your application.

Basic Usage

Here is a complete craco.config.js configuration file that sets up Less compilation and babel-plugin-import for create-react-app:

const CracoAntDesignPlugin = require("craco-antd");

module.exports = {
  plugins: [{ plugin: CracoAntDesignPlugin }],
};

Advanced Usage

Here is a production-ready craco.config.js file that sets up webpackbar and webpack-bundle-analyzer. It also sets up Preact with the craco-preact plugin. (Preact is faster and smaller than React, and it works fine with Ant Design.)

I put my custom theme variables in src/style/AntDesign/customTheme.less. I also use that folder for some custom components and other CSS.

const { BundleAnalyzerPlugin } = require("webpack-bundle-analyzer");
const WebpackBar = require("webpackbar");
const CracoAntDesignPlugin = require("craco-antd");
const path = require("path");

// Don't open the browser during development
process.env.BROWSER = "none";

module.exports = {
  webpack: {
    plugins: [
      new WebpackBar({ profile: true }),
      ...(process.env.NODE_ENV === "development"
        ? [new BundleAnalyzerPlugin({ openAnalyzer: false })]
        : []),
    ],
  },
  plugins: [
    { plugin: require("craco-preact") },
    {
      plugin: CracoAntDesignPlugin,
      options: {
        customizeThemeLessPath: path.join(
          __dirname,
          "src/style/AntDesign/customTheme.less"
        ),
      },
    },
  ],
};

See the Reload Custom Variables During Development section to wrap your "start" script with nodemon.

Customize Ant Design Theme

You can modify the default Ant Design theme by changing some Less variables.

craco-antd will look for variables in a Less file at ./antd.customize.less. (You can customize this file path with the customizeThemeLessPath option.)

// ./antd.customize.less
@primary-color: #1da57a;
@link-color: #1da57a;

Here's a list of all the variables that can be modified.

You can also customize these variables directly in your craco.config.js with the customizeTheme option:

const CracoAntDesignPlugin = require("craco-antd");

module.exports = {
  plugins: [
    {
      plugin: CracoAntDesignPlugin,
      options: {
        customizeTheme: {
          "@primary-color": "#1DA57A",
          "@link-color": "#1DA57A",
        },
      },
    },
  ],
};

customizeTheme is just an alias for the modifyVars option in less-loader.

If you use multiple options to customize the theme variables, they are merged together in the following order:

  • The file at options.customizeThemeLessPath (default: ./antd.customize.less)
  • options.customizeTheme
  • options.lessLoaderOptions.modifyVars

For more information, see Ant Design's "Customize Theme" documentation.

Reload Custom Variables During Development

The webpack dev server needs to be restarted whenever you make a change to your custom theme variables. (It's not possible to reload this file automatically, because the variables are set in the webpack config. I tried to fix this issue but hit a dead-end.)

However, you can automatically restart webpack by wrapping craco start with nodemon.

Install nodemon:

yarn add -D nodemon

# Or globally (not recommended):

npm install -g nodemon

Update the "start" script in package.json:

"scripts": {
  "start": "nodemon -w ./antd.customize.less --exec \"craco start\"",
}

(Change ./antd.customize.less if you are using a different file.)

The webpack dev server will now be restarted whenever you make a change to ./antd.customize.less.

Restart Webpack When craco.config.js Changes

While you're here, you can also add -w craco.config.js to restart webpack whenever your craco configuration changes (craco doesn't do this automatically):

"scripts": {
  "start": "nodemon -w craco.config.js -w ./antd.customize.less --exec \"craco start\"",
}

Disable "Open In Browser"

By default, create-react-app will open a new browser tab every time it starts. This can be really annoying, especially if you set up the nodemon watcher. You can disable this behavior with an environment variable: BROWSER=none.

You can set this in an .env file:

BROWSER=none

I prefer to set it at the top of craco.config.js:

// Don't open the browser during development
process.env.BROWSER = "none";

Options

You can pass an options object to configure the loaders and plugins. You can also pass a modifyLessRule callback to have full control over the Less webpack rule. See the craco-less documentation for more information about these options:

  • options.styleLoaderOptions
  • options.cssLoaderOptions
  • options.postcssLoaderOptions
  • options.lessLoaderOptions
  • options.miniCssExtractPluginOptions
  • options.modifyLessRule

See the babel-plugin-import documentation for more information about this option:

  • options.babelPluginImportOptions

Example:

module.exports = {
  plugins: [
    {
      plugin: CracoAntDesignPlugin,
      options: {
        lessLoaderOptions: {
          modifyVars: { "@primary-color": "#1DA57A" },
          strictMath: true,
          noIeCompat: true,
        },
        cssLoaderOptions: {
          modules: true,
          localIdentName: "[local]_[hash:base64:5]",
        },
        babelPluginImportOptions: {
          libraryDirectory: "es",
        },
      },
    },
  ],
};

Large Bundle Size from Ant Design Icons

You can use the webpack-bundle-analyzer plugin to see a breakdown of all the JS and CSS in your webpack build. Here's how to add this plugin to your craco.config.js configuration file:

const { BundleAnalyzerPlugin } = require("webpack-bundle-analyzer");

module.exports = {
  webpack: {
    plugins: [new BundleAnalyzerPlugin()],
  },
  plugins: [{ plugin: require("craco-antd") }],
};

If you have imported any icons from Ant Design, you will see a very large (> 500KB) entry for @ant-design/icons/lib:

Ant Design Large Icons

This is a problem with Ant Design v3.9.0+, and it will be fixed in the next version. See this GitHub issue for more information. This comment talks about the fix, and here is the PR.

In the meantime, you can set up an import alias and only include the required icons.

Further Configuration

If you need to configure anything else for the webpack build, take a look at the Configuration Overview section in the craco README. You can use CracoAntDesignPlugin while making other changes to babel and webpack, etc.

Contributing

Install dependencies:

$ yarn install

# OR

$ npm install

Run tests:

$ yarn test

Before submitting a pull request, please check the following:

  • All tests are passing
    • Run yarn test
  • 100% test coverage
    • Coverage will be printed after running tests.
    • Check the coverage results in your browser: open coverage/lcov-report/index.html
  • No ESLint errors
    • yarn lint
  • All code is formatted with Prettier
    • yarn format
    • If you use VS Code, you should enable the formatOnSave option.

Test Application

We've included a test React application in this repo, under ./test-app.

Install dependencies:

cd test-app
yarn install

Test the app in development:

yarn start

Test the production build:

yarn build

# Install the "serve" package
yarn global add serve

# Serve the production build
serve -s build

Releasing a new version

  • Make sure the "Supported Versions" section is updated at the top of the README.
  • Check which files will be included in the NPM package:
    • npm pack
    • Update .npmignore to exclude any files.
  • Release new version to NPM:
    • npm publish

License

MIT

Contributors

craco-antd's People

Contributors

aitsvet avatar cemremengu avatar davidnorena avatar dependabot[bot] avatar issaaccbb avatar kamronbatman avatar kovyazin avatar maxwowo avatar ndbroadbent avatar patricklafrance avatar pybuche avatar vangelis-b avatar vovan-ve avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

craco-antd's Issues

Can't get CSS modules and antd styles to work at the same time

Hi @ndbroadbent , @patricklafrance !

I am trying to get CSS Modules to work as well as antd.

So far, I either have antd's styles working, or CSS Modules, but I can't get both to work at the same time.

To get antd's styling to work, I have to comment out cssLoaderOptions... (see in my code below), but then CSS Modules don't work anymore.

If I leave cssLoaderOptions, CSS Modules work, but antd seems to lose some styling. For example, I can still see some animation when clicking on a button, but the color styling and shaping is gone.

Here's a link to my repo.

const CracoAntDesignPlugin = require("craco-antd");
const { BundleAnalyzerPlugin } = require("webpack-bundle-analyzer");
const WebpackBar = require("webpackbar");

// Don't open the browser during development
process.env.BROWSER = "none";

module.exports = {
  webpack: {
    plugins: [
      new WebpackBar({ profile: true }),
      ...(process.env.NODE_ENV === "development"
        ? [new BundleAnalyzerPlugin({ openAnalyzer: false })]
        : []),
    ],
  },
  plugins: [
    {
      plugin: CracoAntDesignPlugin,

      options: {
        modifyLessRule: function(lessRule, _context) {       
          lessRule.test = /\.less$/;
          lessRule.exclude = undefined;

          // console.log('lessRule', lessRule)
          // console.log('JSON', JSON.stringify(lessRule.use))        

          return lessRule;
        },       

        // CSS Modules. This makes the styling of antd to stop working. If I comment out, antd's styling works.
        cssLoaderOptions: {
          modules: true,
          localIdentName: `${
            process.env.NODE_ENV === "production"
              ? "[local]_[hash:base64:5]"
              : "[path][name]__[local]-"
          }-[hash:base64:8]`,
        },
      },
    },
  ],
};

I'm using those versions:

"@craco/craco": "5.0.2",
"antd": "^3.16.6",
"craco-antd": "1.10.0",
"react-scripts": "3.0.0",
"typescript": "^3.4.5"

This is the bundle analyzer when antd works (when I comment out cssLoaderOptions), 2.44Mb:

image

This is when CSS Module work (2.36Mb)

image

ValidationError on `lessLoaderOptions.javascriptEnabled`

2 days ago craco-less upgraded less-loader from 5 to 6 that has a braking change.

This causes the following error:

ValidationError: Invalid options object. Less Loader has been initialized using an options object that does not match the API schema.
 - options has an unknown property 'javascriptEnabled'. These properties are valid:
   object { lessOptions?, prependData?, appendData?, sourceMap?, implementation? }

There are 2 fixes that can be done:

  1. Pin the version of craco-less to 1.16.0
  2. Use the new lessOptions as described here

Unable to use custom vars in .less root file

Hi all,

I have been using craco-antd for our app and recently I started having issues with less compilation.
Basically, it generates two copies of the antd css, one with my custom colours, one with the default. The default being generated last, it overrides my custom settings.
image

The way I have been doing it so far might not be canonical but I needed to do it like that. Here is what I have in the less root file

@import 'antd/dist/antd.less';

@link-color: #ff0000;
@primary-color: #00ff00;

This used to work fine until recently. Maybe linked to upgrade to craco-less 2.0 but not sure.

What is weird is that if I use craco-less instead, it works fine.
To be clear, this works:

const CracoLessPlugin = require('craco-less');

module.exports = function cracoConfig({ env }) {
  return {
    plugins: [
      {
        plugin: CracoLessPlugin,
        options: {
          lessLoaderOptions: {
            lessOptions: {
              javascriptEnabled: true,
            },
          },
        },
      },
    ],
  };
};

But this fails:

const CracoAntDesignPlugin = require('craco-antd');

module.exports = function cracoConfig({ env }) {
  return {
    plugins: [
      {
        plugin: CracoAntDesignPlugin,
        options: {
          lessLoaderOptions: {
            lessOptions: {
              javascriptEnabled: true,
            },
          },
        },
      },
    ],
  };
};

Here is a small reproduction repo from a brand new create-react-app: https://github.com/MaxDNG/craco-antd-issue

I try to find the issue but did not succeed so far. Will keep looking later on.

craco-antd and react-scripts 5.0.0

Not compatible with react-scripts 5.0.0 😥 https://www.npmjs.com/package/react-scripts/v/5.0.0

yarn start output

(node:81909) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'push' of undefined
    at Object.overrideWebpackConfig (app/node_modules/craco-less/lib/craco-less.js:141:34)
    at Object.overrideWebpackConfig (app/node_modules/craco-antd/lib/craco-antd.js:64:26)
    at overrideWebpack (app/node_modules/@craco/craco/lib/features/plugins.js:42:40)
    at app/node_modules/@craco/craco/lib/features/plugins.js:64:29
    at Array.forEach (<anonymous>)
    at applyWebpackConfigPlugins (app/node_modules/@craco/craco/lib/features/plugins.js:63:29)
    at mergeWebpackConfig (app/node_modules/@craco/craco/lib/features/webpack/merge-webpack-config.js:110:30)
    at overrideWebpackDev (app/node_modules/@craco/craco/lib/features/webpack/override.js:11:36)
    at app/node_modules/@craco/craco/scripts/start.js:27:5
(Use `node --trace-warnings ...` to show where the warning was created)
(node:81909) UnhandledPromiseRejectionWarning: Unhandled promise rejection. 
This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise 
which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag 
`--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)
(node:81909) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections 
that are not handled will terminate the Node.js process with a non-zero exit code.

my package.json

  "devDependencies": {
    "@craco/craco": "^6.4.3",
    "craco-alias": "^3.0.1",
    "craco-antd": "^1.19.0",
    "craco-sass-resources-loader": "^1.1.0",
    "typescript": "^4.5.2"
  }

my craco.config.js (only 3 plugins)

// * Craco docs
// * https://github.com/gsoft-inc/craco/blob/master/packages/craco/README.md
// * Plugins
const CracoAntDesignPlugin = require('craco-antd');
const sassResourcesLoader = require('craco-sass-resources-loader');
const CracoAlias = require('craco-alias');

const path = require('path');

const pathResolve = (pathUrl) => path.join(__dirname, pathUrl);

module.exports = {
  reactScriptsVersion: 'react-scripts',

  // Don't reorder plugins
  plugins: [
    {
      // https://www.npmjs.com/package/craco-antd
      plugin: CracoAntDesignPlugin,
      options: {
        customizeThemeLessPath: pathResolve('./src/styles/antd/theme.less'),
      },
    },
    {
      // https://www.npmjs.com/package/craco-sass-resources-loader
      plugin: sassResourcesLoader,
      options: {
        resources: './src/styles/core.scss',
      },
    },
    {
      // https://www.npmjs.com/package/craco-alias
      plugin: CracoAlias,
      options: {
        source: 'tsconfig',
        // baseUrl SHOULD be specified
        // plugin does not take it from tsconfig
        baseUrl: './',
        // tsConfigPath should point to the file where "baseUrl" and "paths" are specified
        tsConfigPath: './tsconfig.extend.json',
      },
    },
  ],
};

I commented CracoAntDesignPlugin & tried re-run yarn start and my app was built/ran correctly.

My temporary fix:

returned to version "react-scripts": "4.0.3"
I will wait for updates. Thanks

not support create react app 4.x

craco start

(node:9289) UnhandledPromiseRejectionWarning: Error: Found an unhandled loader in the development webpack config: /Users/eleme/Desktop/workspace/im-sdk-demo/node_modules/[email protected]@style-loader/dist/cjs.js

This error probably occurred because you updated react-scripts or craco. Please try updating craco-less to the latest version:

   $ yarn upgrade craco-less

Or:

   $ npm update craco-less

If that doesn't work, craco-less needs to be fixed to support the latest version.
Please check to see if there's already an issue in the FormAPI/craco-less repo:

   * https://github.com/FormAPI/craco-less/issues?q=is%3Aissue+webpack+unknown+rule

If not, please open an issue and we'll take a look. (Or you can send a PR!)

You might also want to look for related issues in the craco and create-react-app repos:

   * https://github.com/sharegate/craco/issues?q=is%3Aissue+webpack+unknown+rule
   * https://github.com/facebook/create-react-app/issues?q=is%3Aissue+webpack+unknown+rule

    at throwUnexpectedConfigError (/Users/eleme/Desktop/workspace/im-sdk-demo/node_modules/_@[email protected]@@craco/craco/lib/plugin-utils.js:29:11)
    at throwError (/Users/eleme/Desktop/workspace/im-sdk-demo/node_modules/[email protected]@craco-less/lib/craco-less.js:14:5)
    at /Users/eleme/Desktop/workspace/im-sdk-demo/node_modules/[email protected]@craco-less/lib/craco-less.js:119:7
    at Array.forEach (<anonymous>)
    at Object.overrideWebpackConfig (/Users/eleme/Desktop/workspace/im-sdk-demo/node_modules/[email protected]@craco-less/lib/craco-less.js:51:11)
    at Object.overrideWebpackConfig (/Users/eleme/Desktop/workspace/im-sdk-demo/node_modules/[email protected]@craco-antd/lib/craco-antd.js:64:26)
    at overrideWebpack (/Users/eleme/Desktop/workspace/im-sdk-demo/node_modules/_@[email protected]@@craco/craco/lib/features/plugins.js:42:40)
    at /Users/eleme/Desktop/workspace/im-sdk-demo/node_modules/_@[email protected]@@craco/craco/lib/features/plugins.js:64:29
    at Array.forEach (<anonymous>)
    at applyWebpackConfigPlugins (/Users/eleme/Desktop/workspace/im-sdk-demo/node_modules/_@[email protected]@@craco/craco/lib/features/plugins.js:63:29)
(Use `node --trace-warnings ...` to show where the warning was created)
(node:9289) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)
(node:9289) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

craco-less TypeError: Cannot read property 'push' of undefined

This package has craco-less as dependency. However, depending on the node version I use I get different errors when starting my project using yarn start:

node v17.3.1
Bildschirmfoto 2022-01-19 um 09 02 19

node v14.17.0
Bildschirmfoto 2022-01-19 um 09 17 43

This is my rather simple craco.config.js

const CracoAntDesignPlugin = require('craco-antd');
const path = require('path');

module.exports = {
    webpack: {
	alias: {
		"@components": path.resolve(__dirname, "src/components/"),
		"@util": path.resolve(__dirname, "src/util/"),
		"@pages": path.resolve(__dirname, "src/pages/"),
		"@images": path.resolve(__dirname, "src/images/"),
		"@context": path.resolve(__dirname, "src/context/"),
		"@hooks": path.resolve(__dirname, "src/hooks/"),
	
	},
	plugins: {
		add: [] /* An array of plugins */,
		remove: [] /* An array of plugin constructor's names (i.e. "StyleLintPlugin", "ESLintWebpackPlugin" ) */,
	},
	configure: {
		/* Any webpack configuration options: https://webpack.js.org/configuration */  
	}
},
plugins: [
	{
		plugin: CracoAntDesignPlugin,
		options: {
			customizeThemeLessPath: path.join(
				__dirname,
				'./src/antd.customize.less'
			),
		},
	}
]

};

Any pointers on how to solve this would be great!

Using antd less variables in components

I am customizing my ant design app using craco-antd which works very well :)

Now I'd like to use antd less variables inside the various .less files of my components. So that I can do stuff like e.g:

.card { padding-top: @padding-md; }

I am able to get it to work when I add

@import 'antd/dist/antd.less';

at the top of each .less file that uses an antd variable but that seems quite cubersome. Is there no way to add the variables globally?

Class constructor FileManager cannot be invoked without 'new' in undefined (line undefined, column undefined)

package.json

{
"name": "fund-supervise",
"version": "0.1.0",
"private": true,
"dependencies": {
"@craco/craco": "^5.2.4",
"@types/jest": "24.0.17",
"@types/node": "12.7.0",
"@types/react": "16.8.24",
"@types/react-dom": "16.8.5",
"@types/react-router-dom": "^4.3.4",
"antd": "^3.21.2",
"axios": "^0.19.0",
"babel-plugin-import": "^1.12.0",
"compression-webpack-plugin": "^3.0.0",
"craco-antd": "^1.11.0",
"customize-cra": "^0.4.1",
"echarts": "^4.2.1",
"mobx": "^5.13.0",
"mobx-react": "^6.1.3",
"node-sass": "^4.12.0",
"react": "^16.8.6",
"react-app-rewired": "^2.1.3",
"react-dom": "^16.8.6",
"react-router-dom": "^5.0.1",
"react-scripts": "3.0.1",
"typescript": "3.5.3",
"webpack-bundle-analyzer": "^3.4.1"
},
"scripts": {
"eject": "react-scripts eject",
"start": "craco start",
"build": "craco build",
"test": "craco test"
},
"eslintConfig": {
"extends": "react-app"
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
},
"devDependencies": {
"@babel/plugin-proposal-decorators": "^7.4.4"
}
}

how come that,what should i do

How to use ant less colors in theme.less file ?

Hi,

The way to use default colors in antd is to import '~antd/lib/style/themes/default.less' in one of your less files.

I tried to import the base color file from @import '~/antd/lib/style/color/colors'; in the theme.less but it's ignored (which I assume is normal behaviour).

Is there any other way than to compile the colors to hex and put them at the top of the file, or to import the file in my code outside theme.less (which is not optimal since I need colors to redefine some variables) ?

Influence the order/priority of antd css imports

Is there a way to influence in which order the stylesheets are imported?

This is my current craco.config.js using CRA5 with Antd3 with the CRA5 supporting branch https://github.com/kamronbatman/craco-antd/tree/kbatman/update_craco-antd.

const CracoAntDesignPlugin = require('@mrbatman/craco-antd')

module.exports = {
  plugins: [
    {
      plugin: CracoAntDesignPlugin,
      options: {
        lessLoaderOptions: {
          lessOptions: {
            math: 'always'
          }
        }
      }
    }
  ]

I also use tailwindcss and custom css overwrides, unfortunately craco-antd seems to include antd at last.
This means I have to use important: true flag for tailwindcss and have to use !important everywhere, if I try to override any antd styling.
Is there any way to achieve that antd is included before my import './styles/global.scss' in index.jsx, so my custom css has a higher priority?

I found this post about this issue, but no response: https://stackoverflow.com/questions/63506391/reactjs-craco-antd-rule-priority-rule-mismatch
Isn't that a main issue for most people? In most cases there are needs to somehow overwrite or extend specific styles or to just append a tailwind class to increase a margin…

Unable to make it work with antd and typescript

Hello,

Thx for this plugin.
Unfortunately, I didn't manage to make it work with typscript.

Here is my craco config :

const CracoAntDesignPlugin = require('craco-antd')
const { BundleAnalyzerPlugin } = require('webpack-bundle-analyzer')
const WebpackBar = require('webpackbar')

module.exports = {
	webpack: {
		plugins: [
			new BundleAnalyzerPlugin(),
			new WebpackBar({ profile: true }),
		],
	},
	plugins: [{ plugin: CracoAntDesignPlugin }],
}

If I run yarn run start :

Failed to compile.

./src/index.tsx
Module not found: Can't resolve 'resources/main.less' in '/home/arhia/Documents/projects/payroll-app-next/client/src'

My previous config with react-app-rewired was :

const { injectBabelPlugin } = require('react-app-rewired')
const rewireLess = require('react-app-rewire-less')
const { BundleAnalyzerPlugin } = require('webpack-bundle-analyzer')
const rewireTsJest = require('react-app-rewire-ts-jest')
const WebpackBar = require('webpackbar')

module.exports = {
	webpack: function (config, env) {

		const path = require('path')
		// For import with absolute path
		config.resolve.modules = [path.resolve('src')].concat(config.resolve.modules)

		config = injectBabelPlugin(['import', { libraryName: 'antd', style: true }], config)  // change importing css to less

		const options = {
			javascriptEnabled: true,
			// We use modifyVars option of less-loader here, you can see a orange button rendered on the page after reboot start server.
			modifyVars: {
				"@primary-color": "#f48b31",
				"@font-size-base": "16px",
				"@font-family": "Nunito",
				"@layout-header-background": "#fff",
				"@layout-trigger-color": "#565558",
				"@layout-trigger-background": "#fff"
			},
		}
		config = rewireLess.withLoaderOptions(options)(config, env)

		/*
		=== webpack plugins ===
		Note : we prefer to add new webpack plugins here by ourselves as following, rather than using third-party helpers like rewire-some-plugin-XXX
		because they add an unecessary abstraction only to add a plugin in config.plugins array
		*/
		config.plugins = (config.plugins || []).concat([
			new BundleAnalyzerPlugin(),
			new WebpackBar({
				profile: true,
			})
		])

		return config

	},
	jest: function (config) {

		// placeholder
		const configTsJest = {}
		config = rewireTsJest(config, configTsJest)
		config = {
			...config,
			reporters: [
				"default",
				["./node_modules/jest-html-reporter", {
					pageTitle: "Payroll-app-next: Tests suite",
					outputPath: "tests/report/index.html",
					includeFailureMsg: true,
					dateFormat: "dd/mm/yyyy HH:MM",
					sort: 'status'
				}]
			],
			collectCoverage: true,
			collectCoverageFrom: [
				"src/**/*.{ts,tsx}"
			],
			coveragePathIgnorePatterns: [
				"src/state/state.d.ts"
			],
			coverageReporters: [
				"html",
				"json"
			]
		}

		return config
	}
}

Have you any idea to resolve this issue ?

Using Ant Design Variables in Styled Components

I would like to be able to access the Ant Design variables (which are written in Less) within a styled component. Something like this:

const StyledButton = styled(Button)`
  background-color: @primary-color
`

how can I achieve this?

CRA 3.4.0 - webpack unknown rule

Hi !

Updating to CRA 3.4.x results in the production app raising with this log trace:

/app/node_modules/@craco/craco/lib/plugin-utils.js:29
    throw new Error(
    ^

Error: Found an unhandled loader in the production webpack config: /app/node_modules/style-loader/index.js

This error probably occurred because you updated react-scripts or craco. Please try updating craco-less to the latest version:

   $ yarn upgrade craco-less

Or:

   $ npm update craco-less

If that doesn't work, craco-less needs to be fixed to support the latest version.
Please check to see if there's already an issue in the FormAPI/craco-less repo:

   * https://github.com/FormAPI/craco-less/issues?q=is%3Aissue+webpack+unknown+rule

If not, please open an issue and we'll take a look. (Or you can send a PR!)

You might also want to look for related issues in the craco and create-react-app repos:

   * https://github.com/sharegate/craco/issues?q=is%3Aissue+webpack+unknown+rule
   * https://github.com/facebook/create-react-app/issues?q=is%3Aissue+webpack+unknown+rule

    at throwUnexpectedConfigError (/app/node_modules/@craco/craco/lib/plugin-utils.js:29:11)
    at throwError (/app/node_modules/craco-less/lib/craco-less.js:14:5)
    at /app/node_modules/craco-less/lib/craco-less.js:119:7
    at Array.forEach (<anonymous>)
    at Object.overrideWebpackConfig (/app/node_modules/craco-less/lib/craco-less.js:51:11)
    at Object.overrideWebpackConfig (/app/node_modules/craco-antd/lib/craco-antd.js:63:26)
    at overrideWebpack (/app/node_modules/@craco/craco/lib/features/plugins.js:42:40)
    at /app/node_modules/@craco/craco/lib/features/plugins.js:64:29
    at Array.forEach (<anonymous>)
    at applyWebpackConfigPlugins (/app/node_modules/@craco/craco/lib/features/plugins.js:63:29)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] start: `craco start`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the [email protected] start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /app/.npm/_logs/2020-04-30T08_11_08_192Z-debug.log

I tried to PR craco-antd to use the latest version of craco-less, but it looks like we should also update react-scripts, am I right ?
#28

Thanks !

Need current dependencies for antd and craco

npm install does not work with current versions of dependencies:
@craco/craco: 5.2.1
antd: 3.19.1
react-scripts: 3.0.1

We get contention on versions of craco by craco-antd and craco-less form react-scripts.

recompile after editing `.less` files?

Thank you for this awesome project, It saved me a lot of time!

I'm using it to configure custom themes for my app and noticed that editing theme's *.less file won't trigger webpack's recompilation. I have to restart the webpack process to see the result.

Is it possible to make recompile for *.less files work?

options has an unknown property 'noIeCompat'

I'm trying to override the antd less variable

Follow through the instruction from README, however this error occurred while running npm start:

 - options has an unknown property 'noIeCompat'. These properties are valid:
   object { lessOptions?, prependData?, appendData?, sourceMap?, implementation? }

image

I've try to get rid of this error for a while, can anyone shed me some light...

Steps to reproduce:

npx create-react-app test-project
cd test-project
npm install antd @craco/craco craco-antd

#modify package.json
...
+  "start": "craco start",
...

#add craco.config.js to project root
const CracoAntDesignPlugin = require("craco-antd");

module.exports = {
    plugins: [
        { 
            plugin: CracoAntDesignPlugin,
            options: {
                customizeTheme: {
                    "@primary-color": "#ff0000"
                },
                lessLoaderOptions: {
                    noIeCompat: true
                }
            }
        },
    ],
};

# dependencies
"@craco/craco": "^6.1.2",
"craco-antd": "^1.19.0",
"antd": "^4.15.6",
"react": "^17.0.2",
"react-scripts": "4.0.3",

# run 
npm start

Thanks in advance!!

customize theme via option or antd.customize.less not work

Hi, I need help.
Why customize theme not work as expected?
Am I missing some configuration?
I have configured craco.config.js as seen as below
screen shot 2018-12-22 at 13 05 39

and my package.json

{
  "name": "resist",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "@craco/craco": "^3.2.2",
    "antd": "^3.11.2",
    "craco-antd": "^1.9.3",
    "craco-preact": "^1.1.0",
    "preact": "^8.3.1",
    "preact-compat": "^3.18.4",
    "react": "^16.7.0",
    "react-dom": "^16.7.0",
    "react-hot-loader": "^4.6.3",
    "react-scripts": "2.1.1",
    "unistore": "^3.1.0"
  },
  "scripts": {
    "start": "nodemon -w ./antd.customize.less --exec 'craco start'",
    "build": "craco build",
    "test": "craco test",
    "eject": "craco eject"
  },
  "eslintConfig": {
    "extends": "react-app"
  },
  "browserslist": [
    ">0.2%",
    "not dead",
    "not ie <= 11",
    "not op_mini all"
  ],
  "devDependencies": {
    "nodemon": "^1.18.9"
  }
}

Craco start and craco build causing different css ordering

From: dilanx/craco#57

We recently moved over to craco from react-app-rewired, in conjunction with ant-design. However the css is applied differently when running locally compared to running the completed build. Below is the contents of the craco.config.js file.
test
const CracoAntDesignPlugin = require('craco-antd');
const { BundleAnalyzerPlugin } = require('webpack-bundle-analyzer');
const WebpackBar = require('webpackbar');
module.exports = {
plugins: [{ plugin: CracoAntDesignPlugin }],
webpack: {
plugins: [
new WebpackBar({ profile: true }),
],
},
};

Is this the correct way to ensure that the ant-d styles will be applied last, or have I missed something?

Add example of working with AntdScssThemePlugin

craco-antd is a great way to provide a custom theme for Ant with a project created by create-react-app. I think the next logical step for many projects is being able to consume the Ant less styles from within an SCSS-enabled CRA-based app. AntdScssThemePlugin is a project that enables doing such, by hooking into the less and sass loaders.

Since craco-antd also pulls in craco-less, it has all the key components to support AntdScssThemePlugin. I think it'd be helpful if the documentation showed how to do so.

I realize docs like this may not be an exact fit because it includes an external project. However, I think it's in keeping with the goals of this project and that documentation should live somewhere semi-official, instead of someone's blog.

Support Craco 6

craco-antd is coded to require craco ^5.5.0 and fails to install if using craco@6

npm ERR! ERESOLVE unable to resolve dependency tree
npm ERR!
npm ERR! While resolving: [email protected]
npm ERR! Found: @craco/[email protected]
npm ERR! node_modules/@craco/craco
npm ERR!   @craco/craco@"6.1.1" from the root project
npm ERR!
npm ERR! Could not resolve dependency:
npm ERR! peer @craco/craco@"^5.5.0" from [email protected]
npm ERR! node_modules/craco-antd
npm ERR!   craco-antd@"1.19.0" from the root project

Also using .less files with antd

Hey! Really like the craco, and the antd plugin I think its exactly what I need.
I'm building a new app with CRA with TypeScript, inside Electron and Antd as UI framework.
So far everything is working and I can modifly Antd variables with my custom .less file with the following craco.config.electron.js:

const CracoAntDesignPlugin = require("craco-antd");
const path = require("path");

module.exports = {
  webpack: {
    configure: {
      target: "electron-renderer"
    },
    plugins: [new WebpackBar({ profile: true })]
  },
  plugins: [
    {
      plugin: CracoAntDesignPlugin,
      options: {
        customizeThemeLessPath: path.join(
          __dirname,
          "src/styles/antdCustom.less"
        )
      }
    }
  ]
};

The problem is that I also want to use ".less" and ".module.less" files for sytlying my react components, and use some of the colors provided by antd, so it would be rellay nice to use less instead of plain css. But I cant get it to work, I read all the issues in craco-less and craco-antd.
I'm sure its just a simple config in the "CracoAntDesignPlugin" but I'm fairly new in this webpack environment.
Tried several settings but usually get this error:

[build:electron] ./src/App.module.less 1:0
Module parse failed: Unexpected token (1:0)
You may need an appropriate loader to handle this file type.
> .App {
|   text-align: center;
| }

The relevant parts of my package.json:

"scripts": {    
    "build:electron": "env-cmd -f .env.electron craco build --config craco.config.electron.js"   
  },  
  "dependencies": {
    "@craco/craco": "^5.2.1",
    "@types/jest": "24.0.13",
    "@types/node": "12.0.3",
    "@types/react": "16.8.19",
    "@types/react-dom": "16.8.4",
    "antd": "^3.19.8",
    "craco-antd": "^1.11.0",
    "react": "^16.8.6",
    "react-dom": "^16.8.6",
    "react-scripts": "3.0.1",
    "typescript": "3.5.1"
  }, 
  "devDependencies": {
    "electron": "5.0.2",
    "electron-builder": "20.41.0",
    "env-cmd": "9.0.2",
    "npm-watch": "0.6.0",
    "webpackbar": "^3.2.0"
  }

Or mabye I'm importing incorrectly in my App.tsx
import classes from "./App.module.less";

Any help would be appreciated to find the missing config I need.

Cannot find module 'babel-plugin-import'

Hi,

first of all, thanks for your work. Using CRA 2.x with Antd is super easy now.
However, trying to start an app using the approach described in the installation guide
will throw an immediate error, stating:

Cannot find module babel-plugin-import from '...'

This is easily resolved by installing babel-plugin-import manually.
Looking at the readme, I assume that's not the indended way of installing craco-antd, as it states:

craco-antd includes:

  • Less (provided by craco-less)
  • babel-plugin-import to only import the required CSS, instead of everything
  • A nicer way to customize the theme. Save your modified variables in antd.customize.json

I would therefore recommend shipping craco-antd with babel-plugin-import (no clue, how to do that. Simply install the plugin as a dev dependency (?)) or advising users to install the plugin manually.

Reproduction: https://github.com/unzico/craco-antd-plugin-missing
git clone https://github.com/unzico/craco-antd-plugin-missing
cd craco-antd-plugin-missing
yarn
yarn start

Thank you, have a nice weekend.

plugin breakes font imports build

After adding plugin getting such error, only in build, development works well

./src/assets/styles/index.less
ModuleNotFoundError: Module not found: Error: Can't resolve './font/Museo/Museo-300.eot' in 'C:\Users\gagul\WebstormProjects\vsbl\src\assets\styles'

assets/styles/index.less
@import "./fonts/index.less";

assets/styles/fonts/index.less
@import "./Museo.less";

assets/styles/fonts/Museo.less

@font-face {
    font-family: 'Museo';
    src: url('../../font/Museo/Museo-300.eot');
    src: url('../../font/Museo/Museo-300.eot?#iefix') format('embedded-opentype'),
    url('../../font/Museo/Museo-300.woff2') format('woff2'),
    url('../../font/Museo/Museo-300.woff') format('woff'),
    url('../../font/Museo/Museo-300.ttf')  format('truetype'),
    url('../../font/Museo/Museo-300.svg#Museo-300') format('svg');
}

all fonts are stored in assets/font

without plugin works great

export customized less variables to css variables

Hi!

I've tried craco-antd to customize default antd theme and it works great!

However, I have a question about further customization of antd components:

I use default CRA configuration with CSS modules and do not use Less (except for configuring antd).
In my app I use a Header component and I want to add a bottom border to it. I also want this border to have a color corresponding to the current theme, which is stored under @border-color-base less variable.
Since default antd theme does not apply any border to Header, how can I achieve this?
The perfect way for me is to set the color from a css-variable, but how can I create one?
Defining plain new set of css variables with same values as in Less seems a bad idea as it breaks DRY principle.
How can I translate a set of Less variables to a set of CSS variables?
In other words, I want to be able to use antd color scheme without using Less in my project.

Thanks in advance for your help!

`craco test` fails

I've updated my package.json as shown in the test app, so I have:

"scripts": {
  "test": "craco test"
}

With this change, my test suite no longer runs. I went and checked out the craco-antd test app and I can't get yarn test to work there either. It looks like the less compiler isn't being invoked when it should :

 FAIL  src/App.test.tsx
  ● Test suite failed to run

    /home/nirvdrum/dev/workspaces/craco-antd/test-app/node_modules/antd/es/button/style/index.js:1
    ({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,global,jest){import '../../style/index.less';
                                                                                             ^^^^^^

    SyntaxError: Cannot use import statement outside a module

      10 | };
      11 | 
    > 12 | class App extends Component<any, State> {
         | ^
      13 |   state: State;
      14 | 
      15 |   constructor(props: any) {

      at ScriptTransformer._transformAndBuildScript (node_modules/@jest/transform/build/ScriptTransformer.js:471:17)
      at ScriptTransformer.transform (node_modules/@jest/transform/build/ScriptTransformer.js:513:25)
      at Object.<anonymous> (src/App.tsx:12:1)

error in webpack5 "Invalid configuration object."

[webpack-cli] Invalid configuration object. Webpack has been initialized using a configuration object that does not match the API schema.

  • configuration.plugins[1] misses the property 'apply'. Should be:
    function
    -> The run point of the plugin, required method.

"webpack": "^5.70.0",
"webpack-cli": "^4.9.2",
"webpack-dev-server": "^4.9.0",
"webpack-merge": "^5.8.0"
"craco-antd": "^2.0.0",
colud this be fixed? Thanks any way.

Cannot read property 'env' of undefined

I am unable to start my app unless I failed to follow instructions. The error is:
context.env === "production" ? sassRule.loader : sassRule.use;

package.json:

  "dependencies": {
    "@craco/craco": "^2.4.0",
    "antd": "^3.11.0",
    "craco-antd": "^1.5.0",
    "react": "^16.6.3",
    "react-dom": "^16.6.3",
    "react-scripts": "^2.1.1"
  },
  "scripts": {
    "start": "craco start",
    "build": "craco build",
    "test": "craco test"
  },

craco.config.js

const CracoAntDesignPlugin = require("craco-antd");

module.exports = {
  plugins: [{ plugin: CracoAntDesignPlugin }]
};

Any ideas?

allow libraryDirectory as option

Hi,

Using this plugin, I've just updated antd and @ant-design/pro-tables to the current last versions.

But I'm facing the issue where no longer the internationalization configuration is working almost like this issue:

ant-design/pro-table#256 (comment)

After a lot of test and failure I found the issue is here:

https://github.com/DocSpring/craco-antd/blob/master/lib/craco-antd.js#L91

Changing manually the libraryDirectory from "lib" to "es" seems to fix the error.

Is there a way to make that libraryDirectory modifiable by the user ?

I can help with a PR if you agree :)

Thanks in advance.

styles not loading

Hi ! I'm trying to use craco-antd with CRA 2.0. The styles for the components are not loading.

package.json

"dependencies": {
    "@craco/craco": "^3.2.3",
    "antd": "3.11.6",
    "craco-antd": "^1.9.3",
    "react": "^16.7.0",
    "react-dom": "^16.7.0",
    "react-scripts": "2.1.1"
  },
  "scripts": {
    "start": "craco start",
    "build": "craco build",
    "test": "craco test",
    "eject": "react-scripts eject"
  },
  "eslintConfig": {
    "extends": "react-app"
  },

craco.config.js

const CracoAntDesignPlugin = require("craco-antd");

module.exports = {
  plugins: [{ 
      plugin: CracoAntDesignPlugin,
      options: {
        customizeTheme: {
          "@primary-color": "#1DA57A",
          "@link-color": "#1DA57A"
        }
      } 
    }]
};

Unable to make it work properly

I have a CRA 2.1.1 app and I've followed your setup step by step. I'm using your production-version of craco.config.js but without the pract plugin.

const { BundleAnalyzerPlugin } = require("webpack-bundle-analyzer");
const WebpackBar = require("webpackbar");
const CracoAntDesignPlugin = require("craco-antd");
const path = require("path");

// Don't open the browser during development
process.env.BROWSER = "none";

module.exports = {
  webpack: {
    plugins: [
      new WebpackBar({ profile: true }),
      ...(process.env.NODE_ENV === "development" ? [new BundleAnalyzerPlugin({ openAnalyzer: false })] : [])
    ]
  },
  plugins: [
    {
      plugin: CracoAntDesignPlugin,
      options: {
        customizeThemeLessPath: path.join(__dirname, "src/styles/antd/custom-theme.less")
      }
    }
  ]
};

I'm only using a few components from antd. Those components are rendered after some authentication process is completed. As soon as those components are rendered, all the antd stylesheets are injected in the document and overriding my variables.

So, it seems babel-plugin-import is not properly working because it should only load the css related to the components I'm using right?
Also, the variables are overwritten when the styles are injected.

Any ideas?

Maintance

Is this package still maintained?

craco test

Not sure if it's related to this plugin but running craco test is not allowing my tests to pass. I am using create-react-app with typescript. I get the following error

node_modules/antd/lib/style/index.less:1
    ({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,global,jest){@import './themes/index';
                                                                                             ^

    SyntaxError: Invalid or unexpected token

      at ScriptTransformer._transformAndBuildScript (node_modules/@jest/transform/build/ScriptTransformer.js:537:17)
      at ScriptTransformer.transform (node_modules/@jest/transform/build/ScriptTransformer.js:579:25)
      at Object.<anonymous> (node_modules/antd/lib/row/style/index.js:3:1)

This is what my config looks like

module.exports = {
  plugins: [
    {
      plugin: CracoAntDesignPlugin,
      options: {
        customizeTheme: antOverrides,
      },
    },
  ],
  jest: {
    configure: {
      transformIgnorePatterns: ['node_modules[/\\\\](?!@amcharts[/\\\\]amcharts4)'],
    },
  },
};
    "@craco/craco": "^5.7.0",
    "antd": "^4.6.4",
    "craco-antd": "^1.18.1",

Media queries in customizeTheme

Is it possible to use media queries like the following in the customizeTheme property?

@media screen and (max-width: 768px) {
  .ant-layout-header , .ant-layout-content {
    padding: 0 24px !important
  }
}

react-scripts 5 and npm 7

In npm 7+, the latest release #73 currently doesn't work without install --force because @craco/[email protected] requires react-scripts@^4.0.0 (npm 7 has stricter requirements for peer dependencies). In essence, you will have to wait for craco to update their project to support react-scripts@5. There is an alpha release that will do that: @craco/[email protected] but it will require craco-antd to change it's dependency requirement from [email protected] to the alpha release. And obviously you will have to be comfortable with using an alpha release.

Double colon Error

I am trying to override @collapse-content-padding

This is my craco.config.js:

const CracoAntDesignPlugin = require("craco-antd");

module.exports = {
  plugins: [
    {
      plugin: CracoAntDesignPlugin,
      options: {
        customizeTheme: {
          "@primary-color": "#1DA57A",
          "@link-color": "#1DA57A",
          '@collapse-content-padding:': '0px' ,
        },
      },
    },
  ],
};

if I remove the line with that customization and just leave the other 2, it works fine.

with '@collapse-content-padding:': '0px' , I get this error:

./node_modules/antd/dist/antd.less (./node_modules/css-loader/dist/cjs.js??ref--5-oneOf-9-1!./node_modules/postcss-loader/src??postcss!./node_modules/resolve-url-loader??ref--5-oneOf-9-3!./node_modules/less-loader/dist/cjs.js??ref--5-oneOf-9-4!./node_modules/antd/dist/antd.less)
Error: resolve-url-loader: CSS error
  file://path/to/project/node_modules/antd/lib/collapse/style/index.less:96:6: Double colon
You tried to parse Less with the standard CSS parser; try again with the postcss-less parser
  You tried to parse Less with the standard CSS parser; try again with the postcss-less parser

fwiw, here is the antd .less it is referencing:

  &-content {
    color: @text-color;
    background-color: @collapse-content-bg;
    border-top: @border-width-base @border-style-base @border-color-base;

    & > &-box {
      padding: @collapse-content-padding; // this line
    }

    &-hidden {
      display: none;
    }
  }

Somehow this customization is putting in a second colon? I don't get what I am doing wrong or why the other 2 customized variables work fine...

Does not work with jest

Use craco test results in the error:

Test suite failed to run

    /Users/xxx/sources/proj/node_modules/antd/es/card/style/index.js:1
    ({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,global,jest){import '../../style/index.less';
                                                                                                    ^^^^^^^^^^^^^^^^^^^^^^^^

    SyntaxError: Unexpected string

      10 |   AutoComplete,
      11 |   message,
    > 12 |   Select
         | ^
      13 | } from "antd";
      14 | import axios from "axios";

Problem resolved when I changed back to react-scripts test.

BTW, craco start works fine.

Env

"craco-antd": "^1.9.3",
"@craco/craco": "^3.2.3",
"antd": "^3.11.6",
"react-scripts": "^2.1.1"

// craco.config.js

const CracoAntDesignPlugin = require("craco-antd");

module.exports = {
  plugins: [
    {
      plugin: CracoAntDesignPlugin,
      options: {
        customizeTheme: {
          "@primary-color": "#8440bd"
        }
      }
    }
  ]
};

Thank you!

Missing releases/tags

The last tag or release for this project was for 1.14.1, but NPM currently has 1.18.0. If not too much of a hassle, it'd be helpful if there were tags with release notes. Unfortunately, the project doesn't have a changelog that I could find, so the only way to tell what's changed is to read the git log in reverse order. Without tags, however, it's hard to see what's changed between versions since 1.14.1 because there's no SHA associated with them.

How to achieve less modules

I'm going to build a React app,Less is used.I'm trying to use className={styles.app},But I didn't get the results I wanted,How can I do that?

0
1

unable to work

`
const { BundleAnalyzerPlugin } = require("webpack-bundle-analyzer");
const WebpackBar = require("webpackbar");
const CracoAntDesignPlugin = require("craco-antd");
const path = require("path");

// Don't open the browser during development
process.env.BROWSER = "none";

module.exports = {
webpack: {
plugins: [
new WebpackBar({ profile: true }),
...(process.env.NODE_ENV === "development"
? [new BundleAnalyzerPlugin({ openAnalyzer: false })]
: [])
]
},
plugins: [
{ plugin: require("craco-preact") },
{
plugin: CracoAntDesignPlugin,
options: {
customizeThemeLessPath: path.join(
__dirname,
"src/styles/antd-custom.less"
)
}
}
]
};

`

And my .less file didn't work

Couldn't migrate antd 3.x to 4.x [Craco + Typescript Project]

Project worked fine with antd version 3.26.18 and craco-antd 1.11.0.

Followed the migration guide by Antd to upgrade antd to 4.5.3 but got the following error when trying to compile.

/Users/xxx/node_modules/@ant-design/icons/lib/components/Icon.d.ts(19,78):
TS2344: Type '"max" | "required" | "low" | "high" | "disabled" | "default" | "start" | "open" | "media" | "hidden" | "cite" | "data" | "dir" | "form" | "label" | "slot" | "span" | "style" | "summary" | ... 345 more ... | "wmode"' does not satisfy the constraint '"max" | "required" | "low" | "high" | "disabled" | "default" | "start" | "open" | "media" | "hidden" | "cite" | "data" | "dir" | "form" | "label" | "slot" | "span" | "style" | "summary" | ... 345 more ... | "wmode"'.
  Type '"translate"' is not assignable to type '"max" | "required" | "low" | "high" | "disabled" | "default" | "start" | "open" | "media" | "hidden" | "cite" | "data" | "dir" | "form" | "label" | "slot" | "span" | "style" | "summary" | ... 345 more ... | "wmode"'.

I suspected issue with @types/react: 16.8.20, but not sure if that's the problem.

customizeTheme with files that use JS throws error SyntaxError: Cannot use import statement outside a module

I have a couple of files that set up the theme and style variables for my App. I have them each in their own file and I import one another using the import syntax. I keep getting this compilation error when using customizeTheme and starting the App:

eg: let´s assume it says  import fontSize from "./fontSize"
SyntaxError: Cannot use import statement outside a module

The config is as follows:

const CracoAntDesignPlugin = require("craco-antd");
const { customVariables } = require("./src/styles/styles");

module.exports = {
    plugins: [
        {
            plugin: CracoAntDesignPlugin,
            options: {
                customizeTheme: {
                customVariables,
                },
                javascriptEnabled: true,
            },
        },
    ],
};

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.