Skip to content

Latest commit

 

History

History
106 lines (106 loc) · 4.42 KB

babel-config-for-ref.md

File metadata and controls

106 lines (106 loc) · 4.42 KB
{
  // Javascript settings.
  "presets": [
    [
      "@babel/env",
      {
        "forceAllTransforms": true,
        "targets": {
          /* This is the full list of browsers we support, but we are not using it because we want babel-polyfill
         * to include only polyfills for more modern browsers.
         * Older browser polyfills are in preESModulesPolyfills.js
         */
          /* "browsers": ["Chrome 60", "Firefox 57", "iOS 9", "Edge 14", "ChromeAndroid 64", "Safari 10", "ie 11"] */
          /*
         * This is the list of browers we support that all also have support for the nomodule script
         * attribute, meaning we can make them ignore a file that includes polyfills for older browsers
         */
          "browsers": [
            "Chrome 61",
            "Firefox 60",
            "iOS 11",
            "Edge 16",
            "ChromeAndroid 67",
            "Safari 11"
          ]
        },
        "useBuiltIns": "entry",
        "corejs": "3.8.1",
        "modules": false,
        "debug": false
      }
    ],
    "@babel/react"
  ],
  "ignore": [
    /* Ignore the file containing core-js polyfill imports for older browsers. If Babel processes the file,
     * it will remove all the imports because they are not needed for the newer browsers in the list above.
     */
    "./src/platform/polyfills/preESModulesPolyfills.js"
  ],
  "plugins": [
    "lodash",
    // Stage 2
    "@babel/plugin-proposal-function-sent",
    "@babel/plugin-proposal-export-namespace-from",
    "@babel/plugin-proposal-numeric-separator",
    "@babel/plugin-proposal-throw-expressions",
    // Stage 3
    "@babel/plugin-proposal-nullish-coalescing-operator",
    "@babel/plugin-proposal-optional-chaining",
    "@babel/plugin-syntax-dynamic-import",
    "@babel/plugin-syntax-import-meta",
    ["@babel/plugin-proposal-class-properties", { "loose": false }],
    "@babel/plugin-proposal-json-strings",
    [
      "module-resolver",
      {
        "root": "./src",
        "alias": {
          "~": "./src",
          "@@vap-svc": "./src/platform/user/profile/vap-svc",
          "@@profile": "./src/applications/personalization/profile",
          "@department-of-veterans-affairs/component-library/ProgressButton": "@department-of-veterans-affairs/react-components/ProgressButton",
          "@department-of-veterans-affairs/component-library/RadioButtons": "@department-of-veterans-affairs/react-components/RadioButtons",
          "@department-of-veterans-affairs/component-library/Breadcrumbs": "@department-of-veterans-affairs/react-components/Breadcrumbs",
          "@department-of-veterans-affairs/component-library/Modal": "@department-of-veterans-affairs/react-components/Modal",
          "@department-of-veterans-affairs/component-library/FileInput": "@department-of-veterans-affairs/react-components/FileInput",
          "@department-of-veterans-affairs/component-library/SystemDownView": "@department-of-veterans-affairs/react-components/SystemDownView",
          "@department-of-veterans-affairs/component-library/DropDownPanel": "@department-of-veterans-affairs/react-components/DropDownPanel",
        }
      }
    ]
  ],
  // Share polyfills between files.
  "env": {
    "test": {
      "presets": ["@babel/env", "@babel/preset-react"],
      "plugins": [
        "istanbul",
        "transform-class-properties",
        "dynamic-import-node",
        "transform-react-remove-prop-types",
        // Stage 2
        "@babel/plugin-proposal-function-sent",
        "@babel/plugin-proposal-export-namespace-from",
        "@babel/plugin-proposal-numeric-separator",
        "@babel/plugin-proposal-throw-expressions",
        // Stage 3
        "@babel/plugin-syntax-dynamic-import",
        "@babel/plugin-syntax-import-meta",
        ["@babel/plugin-proposal-class-properties", { "loose": false }],
        "@babel/plugin-proposal-json-strings"
      ]
    },
    "production": {
      "plugins": [
        [
          "transform-react-remove-prop-types",
          {
            "removeImport": true
          }
        ]
      ]
    }
  }
}