mirror of
https://github.com/embarklabs/embark.git
synced 2025-01-09 05:23:26 +00:00
c4ad3d63e7
This follows on PR #2227. Satisfy new peer dependencies following the bumps: `@storybook/core`, `regenerator-runtime`. Follow storybook's instructions to add `@storybook/preset-create-react-app` as a dependency and also add the needed `.storybook/main.js` in `packages/cockpit/ui/`. Storybook is sensitive to presets being in the immediate project's `node_modules` so add a `"nohoist"` in the root `package.json` for `"embark-ui/@storybook/**"`. After making the changes above, problems related to babel were observed when running `yarn start`. It has been known for some time that having the root babel config's dependencies spec'd in `packages/utils/collective/package.json` (which is the package that actually drives the babel cli) could lead to problems related to deduping, but such problems hadn't been experienced until now. Move the dependencies relevant to the root `babel.config.js` into the root `package.json` and update the explanatory comment in the config.
88 lines
2.1 KiB
JavaScript
88 lines
2.1 KiB
JavaScript
/* global module require */
|
|
|
|
/*
|
|
* dependencies of this config should be specified in `./package.json` relative
|
|
* to this config file (which should be in the root of the monorepo);
|
|
* yarn-workspace hoisting re: dev/Deps specified in
|
|
* `packages/utils/collective/package.json` is not reliable re: dependencies of
|
|
* this root-level config being resolvable (with correct versions) from the
|
|
* monorepo root
|
|
*/
|
|
|
|
const cloneDeep = require('lodash.clonedeep');
|
|
|
|
module.exports = (api) => {
|
|
const env = api.env();
|
|
|
|
const base = {
|
|
babelrcRoots: [
|
|
'.',
|
|
'packages/*'
|
|
],
|
|
plugins: [
|
|
'babel-plugin-macros',
|
|
['@babel/plugin-proposal-decorators', {
|
|
legacy: true
|
|
}],
|
|
'@babel/plugin-proposal-export-namespace-from',
|
|
'@babel/plugin-proposal-export-default-from',
|
|
'@babel/plugin-syntax-dynamic-import',
|
|
['@babel/plugin-proposal-class-properties', {
|
|
loose: true
|
|
}],
|
|
'@babel/plugin-proposal-nullish-coalescing-operator',
|
|
'@babel/plugin-proposal-optional-chaining',
|
|
['@babel/plugin-transform-runtime', {
|
|
corejs: 3
|
|
}]
|
|
],
|
|
presets: [
|
|
'@babel/preset-env',
|
|
'@babel/preset-typescript'
|
|
]
|
|
};
|
|
|
|
if (env === 'base' || env.startsWith('base:')) {
|
|
return base;
|
|
}
|
|
|
|
const browser = cloneDeep(base);
|
|
browser.plugins[browser.plugins.length - 1][1].useESModules = true;
|
|
browser.presets[0] = [browser.presets[0], {
|
|
corejs: 3,
|
|
modules: false,
|
|
shippedProposals: true,
|
|
targets: {browsers: ['last 1 version', 'not dead', '> 0.2%']},
|
|
useBuiltIns: 'usage'
|
|
}];
|
|
|
|
if (env === 'browser' || env.startsWith('browser:')) {
|
|
return browser;
|
|
}
|
|
|
|
const node = cloneDeep(base);
|
|
node.plugins.splice(
|
|
node.plugins.indexOf('@babel/plugin-syntax-dynamic-import') + 1,
|
|
0,
|
|
'babel-plugin-dynamic-import-node'
|
|
);
|
|
node.presets[0] = [node.presets[0], {
|
|
corejs: 3,
|
|
shippedProposals: true,
|
|
targets: {node: '10.17.0'},
|
|
useBuiltIns: 'usage'
|
|
}];
|
|
|
|
if (env === 'node' || env.startsWith('node:')) {
|
|
return node;
|
|
}
|
|
|
|
const test = cloneDeep(node);
|
|
|
|
if (env === 'test') {
|
|
return test;
|
|
}
|
|
|
|
return {};
|
|
};
|