@procore/core-scripts
Version:
A CLI to enhance your development experience
175 lines • 5.82 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.createConfigForReact = createConfigForReact;
exports.createConfigForLib = createConfigForLib;
exports.createConfigForDependencies = createConfigForDependencies;
const tslib_1 = require("tslib");
const getCacheIdentifier_1 = tslib_1.__importDefault(require("react-dev-utils/getCacheIdentifier"));
const path_1 = tslib_1.__importDefault(require("path"));
/**
* @see https://babeljs.io/docs/options#targets
* @see https://browsersl.ist/#q=defaults
* `default` is a shortcut for `> 0.5%, last 2 versions, Firefox ESR, not dead`.
*/
const targets = 'defaults';
const corejsVersion = require('core-js/package.json').version;
const runtimeVersion = require('@babel/runtime/package.json').version;
// https://github.com/facebook/create-react-app/blob/main/packages/babel-preset-react-app/create.js#L176
const transformRuntimeOptions = {
// By default, babel assumes babel/runtime version 7.0.0-beta.0,
// explicitly resolving to match the provided helper functions.
// https://github.com/babel/babel/issues/10261
version: runtimeVersion,
// Undocumented option that lets us encapsulate our runtime, ensuring
// the correct version is used
// https://github.com/babel/babel/blob/090c364a90fe73d36a30707fc612ce037bdbbb24/packages/babel-plugin-transform-runtime/src/index.js#L35-L42
absoluteRuntime: path_1.default.dirname(require.resolve('@babel/runtime/package.json')),
};
function createConfigForReact(options) {
const isProduction = options.env === 'production';
return {
babelrc: false,
cacheCompression: false,
cacheDirectory: true,
cacheIdentifier: (0, getCacheIdentifier_1.default)(options.env, [
'babel-plugin-named-asset-import',
'react-dev-utils',
]),
assumptions: {
privateFieldsAsProperties: true,
setPublicClassFields: true,
},
compact: isProduction,
configFile: false,
targets,
plugins: [
[
require.resolve('@babel/plugin-transform-runtime'),
transformRuntimeOptions,
],
[
require.resolve('babel-plugin-named-asset-import'),
{
loaderMap: {
svg: {
ReactComponent: '@svgr/webpack?-svgo,+titleProp,+ref![path]',
},
},
},
],
[
require.resolve('babel-plugin-styled-components'),
{
minify: true,
ssr: false,
displayName: true,
fileName: false,
transpileTemplateLiterals: true,
pure: false,
},
],
],
presets: [
[
require.resolve('@babel/preset-env'),
{
useBuiltIns: 'usage',
corejs: corejsVersion,
},
],
[
require.resolve('@babel/preset-react'),
{
useBuiltIns: true,
},
],
require.resolve('@babel/preset-typescript'),
],
};
}
function createConfigForLib(env) {
const isProduction = env === 'production';
return {
babelrc: false,
cacheCompression: isProduction,
cacheDirectory: true,
compact: isProduction,
configFile: false,
assumptions: {
privateFieldsAsProperties: true,
setPublicClassFields: true,
},
plugins: [
[
require.resolve('@babel/plugin-proposal-export-default-from'),
{
loose: true,
},
],
[
require.resolve('babel-plugin-named-asset-import'),
{
loaderMap: {
svg: {
ReactComponent: '@svgr/webpack?-svgo,+titleProp,+ref![path]',
},
},
},
],
],
presets: [
[
require.resolve('@babel/preset-env'),
{
useBuiltIns: false,
},
],
[
require.resolve('@babel/preset-react'),
{
useBuiltIns: true,
},
],
[
require.resolve('@babel/preset-typescript'),
{
useBuiltIns: true,
},
],
],
};
}
function createConfigForDependencies(options) {
return {
babelrc: false,
cacheCompression: false,
cacheDirectory: true,
cacheIdentifier: (0, getCacheIdentifier_1.default)(options.env, ['react-dev-utils']),
compact: false,
configFile: false,
sourceType: 'unambiguous',
targets,
assumptions: {
privateFieldsAsProperties: true,
setPublicClassFields: true,
},
plugins: [
[
require.resolve('@babel/plugin-transform-runtime'),
transformRuntimeOptions,
],
],
presets: [
[
require.resolve('@babel/preset-env'),
{
useBuiltIns: 'usage',
corejs: corejsVersion,
},
],
],
sourceMaps: options.shouldUseSourceMap,
inputSourceMap: options.shouldUseSourceMap,
};
}
//# sourceMappingURL=config.js.map
;