Skip to content

Instantly share code, notes, and snippets.

@mikew
Created November 27, 2023 00:51
Show Gist options
  • Save mikew/1e9bcedb1627a305947e7b65cd083149 to your computer and use it in GitHub Desktop.
Save mikew/1e9bcedb1627a305947e7b65cd083149 to your computer and use it in GitHub Desktop.
efficient mui imports via babel
[
'babel-plugin-transform-imports',
{
'@mui/material': {
transform: (importName: string) => {
const base = '@mui/material/modern'
switch (importName) {
case 'colors':
throw new Error(
"Cannot modernize `colors`, you must use `import { colorName } from '@mui/material/colors'",
)
case 'adaptV4Theme':
case 'createMixins':
case 'createMuiStrictModeTheme':
case 'createPalette':
case 'createStyles':
case 'createTheme':
case 'createTransitions':
case 'createTypography':
case 'cssUtils':
case 'CssVarsProvider':
case 'defaultTheme':
case 'excludeVariablesFromRoot':
case 'experimental_extendTheme':
case 'getOverlayAlpha':
case 'identifier':
case 'index':
case 'makeStyles':
case 'responsiveFontSizes':
case 'shadows':
case 'shouldSkipGeneratingVar':
case 'styled':
case 'ThemeProvider':
case 'useTheme':
case 'useThemeProps':
case 'withStyles':
case 'withTheme':
case 'zIndex':
return `${base}/styles/${importName}`
default:
return `${base}/${importName}/${importName}`
}
},
preventFullImport: true,
},
'@mui/material/colors': {
transform:
// eslint-disable-next-line no-template-curly-in-string -- this is how the plugin works.
'@mui/material/modern/colors/${member}',
preventFullImport: true,
},
'@mui/icons-material': {
transform:
// eslint-disable-next-line no-template-curly-in-string -- this is how the plugin works.
'@mui/icons-material/esm/${member}',
preventFullImport: true,
},
'@mui/lab': {
transform:
// eslint-disable-next-line no-template-curly-in-string -- this is how the plugin works.
'@mui/lab/modern/${member}/${Member}',
preventFullImport: true,
},
},
],
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment