Making Ant Design CSS Optimization to Work on CodeSandBox

featured
September 16, 2018
💫 Originally posted here. Broken? Let me know ~

Photo by Guillaume de Germain on Unsplash

I’ve been creating small sites on CodeSandBox as it saves you much time on installing new packages.

Ant Design provides a way to optimize components & CSS imports using their custom babel plugin (babel-plugin-import) via react-app-rewired without having to eject a create-react-app generated site.

Everything works fine locally but CSS is not applied on CodeSandBox.

Local Demo

This is how it looks locally with the rewired site.

Ant Design CSS Working Locally

You can see that babel-plugin-import injects necessary CSS even after commenting out import "antd/dist/antd.css".

CodeSandBox Demo

Let’s run the same code (shared via GitHub) on CodeSandBox.

Ant Design CSS Not Working on CodeSandBox

If you comment out the CSS import, CSS is not imported any more.

So let’s see how to make CSS work locally & on CodeSandBox.

Making it work on CodeSandBox

The trick is to dynamically import the CSS file by checking if it’s running in production or development mode.

if (process.env.NODE_ENV === "production") {
import("./styles.css");
} else {
// Make sure that the custom stylesheet overrides antd css.
import("antd/dist/antd.css").then(() => import("./styles.css"));
}
view raw dynamic import.js hosted with ❤ by GitHub

If replace previous static imports with dynamic versions, CSS will work on local machine as well as on CodeSandBox (with Ant Design’s optimizations applied in production mode).

Ant Design CSS Working on CodeSandBox

After deploying it on Netlify, you can see babel-plugin-import working via create-app-rewire with reduced CSS size.

Full Ant Design CSS
CSS size reduced

Parting Words

I was building Bunpkg mostly on CodeSandBox and that was how I got around with the issue.

This might not be the optimal solution so I’d love it if you could provide me any easier way 🙏.