config-overrides.js 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. const path = require('path')
  2. const { override, addBabelPreset, addWebpackAlias, disableEsLint } = require('customize-cra')
  3. const eslintConfig = require('../../.eslintrc.js')
  4. // based on https://github.com/arackaf/customize-cra/issues/175#issuecomment-610023655
  5. const useEslintConfig = (configRules) => (config) => {
  6. const updatedRules = config.module.rules.map((rule) => {
  7. // Only target rules that have defined a `useEslintrc` parameter in their options
  8. if (rule.use && rule.use.some((use) => use.options && use.options.useEslintrc !== void 0)) {
  9. const ruleUse = rule.use[0]
  10. const baseOptions = ruleUse.options
  11. const baseConfig = baseOptions.baseConfig || {}
  12. const newOptions = {
  13. useEslintrc: false,
  14. ignore: true,
  15. baseConfig: { ...baseConfig, ...configRules },
  16. }
  17. ruleUse.options = newOptions
  18. return rule
  19. // Rule not using eslint. Do not modify.
  20. } else {
  21. return rule
  22. }
  23. })
  24. config.module.rules = updatedRules
  25. return config
  26. }
  27. module.exports = {
  28. webpack: override(
  29. addBabelPreset('@emotion/babel-preset-css-prop'),
  30. addWebpackAlias({
  31. ['@']: path.resolve(__dirname, 'src/'),
  32. }),
  33. // once project is cleaned up we can remove disable and enable the config again
  34. // useEslintConfig(eslintConfig),
  35. disableEsLint()
  36. ),
  37. paths: (paths) => {
  38. paths.appBuild = path.resolve(__dirname, '..', '..', 'dist')
  39. return paths
  40. },
  41. }