babel-preset-docm
Version:
Babel preset used on docm
2 lines (1 loc) • 1.96 kB
JavaScript
const config=e=>{return{presets:[e.env.test&&[require("@babel/preset-env").default,{targets:{node:"6.12"}}],(e.env.prod||e.env.dev)&&[require("@babel/preset-env").default,{useBuiltIns:"entry",modules:!1}],[require("@babel/preset-react").default,{development:e.env.dev,useBuiltIns:!0}],e.flow&&[require("@babel/preset-flow").default],e.typescript&&[require("@babel/preset-typescript").default]].filter(Boolean),plugins:[require("babel-plugin-macros"),require("@babel/plugin-transform-destructuring").default,[require("@babel/plugin-proposal-class-properties").default,{loose:!0}],[require("@babel/plugin-proposal-object-rest-spread").default,{useBuiltIns:!0}],[require("@babel/plugin-transform-runtime").default,{helpers:!1,regenerator:!0}],e.parseProps&&[require("babel-plugin-react-docgen").default,{resolver:"findAllExportedComponentDefinitions"}],e.env.prod&&[require("babel-plugin-transform-react-remove-prop-types").default,{removeImport:!0}],!e.env.test&&[require("@babel/plugin-transform-regenerator").default,{async:!1}],require("@babel/plugin-syntax-dynamic-import").default,e.env.test&&[require("babel-plugin-transform-dynamic-import").default]].filter(Boolean)}},validateBool=(e,r,t)=>{if(void 0===r&&(r=t),"boolean"!=typeof r)throw Error(`Preset react-app: '${e}' option must be a boolean.`);return r},DEFAULT_OPTS={flow:!1,typescript:!1,parseProps:!0},preset=(e,r=DEFAULT_OPTS)=>{const t=process.env.BABEL_ENV||process.env.NODE_ENV,o="development"===t,l="production"===t,a="test"===t;if(!o&&!l&&!a)throw Error('Using `babel-preset-docm` requires that you specify `NODE_ENV` or `BABEL_ENV` environment variables. Valid values are "development", "test", and "production". Instead, received: '+JSON.stringify(t)+".");const s=validateBool("flow",r.flow,!1),p=validateBool("typescript",r.typescript,!1),n=validateBool("parseProps",r.parseProps,!1);return config({typescript:p,flow:s,parseProps:n,env:{dev:o,prod:l,test:a}})};export default preset;