UNPKG

babel-preset-dev-toolkit

Version:

Adds sane if-statements & root-relative imports

71 lines (59 loc) 2.21 kB
'use strict'; const path = require('path'); // Use require.resolve to prevent issues when using npm link // see: https://github.com/babel/babel-loader/issues/149 var preset = { presets: [require.resolve('@babel/preset-env'), require.resolve('@babel/preset-react')], plugins: [ // class { handleThing = () => { } } require.resolve('@babel/plugin-proposal-class-properties'), // { ...todo, completed: true } require.resolve('@babel/plugin-proposal-object-rest-spread'), // support for async/await require.resolve('@babel/plugin-transform-runtime'), // Support dynamic `import()`-statement everywhere require.resolve('babel-plugin-transform-dynamic-import'), // Sane if-statements for React require.resolve('babel-plugin-jsx-control-statements'), // Allow root-relative imports for client & server [ require.resolve('babel-plugin-module-resolver'), { // using `process.cwd` makes it also work with `import()` root: ['./src'], alias: { src: path.resolve(process.cwd(), 'src'), }, }, ], ], }; // Warn Users to make sure we don't have an invalid `NODE_ENV` var env = process.env.BABEL_ENV || process.env.NODE_ENV; if (env !== 'development' && env !== 'test' && env !== 'production') { throw new Error( 'Using `babel-preset-dev-toolkit` requires that you specify `NODE_ENV` or ' + '`BABEL_ENV` environment variables. Valid values are "development", ' + '"test", and "production". Instead, received: ' + JSON.stringify(env) + '.' ); } if (env === 'development' || env === 'test') { preset.plugins.push.apply(preset.plugins, [ // Adds component stack to warning messages require.resolve('@babel/plugin-transform-react-jsx-source'), ]); } if (env === 'test') { preset.plugins.push.apply(preset.plugins, [ // Transform ES modules to commonjs for Jest support [require.resolve('@babel/plugin-transform-modules-commonjs'), { loose: true }], ]); } if (env === 'production') { preset.plugins.push.apply(preset.plugins, [ require.resolve('babel-plugin-transform-react-remove-prop-types'), ]); } module.exports = (api, opts) => preset;