Skip to content

Commit c18b75c

Browse files
committedSep 1, 2021
fix(tsbb): fix babel cjs options.
1 parent 8d928da commit c18b75c

File tree

1 file changed

+42
-23
lines changed

1 file changed

+42
-23
lines changed
 

‎packages/tsbb/src/babel/index.ts

+42-23
Original file line numberDiff line numberDiff line change
@@ -36,40 +36,54 @@ export function transform(filename: string, options?: TransformHandleOptions): P
3636
require.resolve('@babel/plugin-syntax-dynamic-import'),
3737
require.resolve('babel-plugin-add-module-exports'),
3838
require.resolve('babel-plugin-transform-typescript-metadata'),
39+
/**
40+
* Use the legacy (stage 1) decorators syntax and behavior.
41+
* https://babeljs.io/docs/en/babel-plugin-proposal-decorators#legacy
42+
* If you are including your plugins manually and using `@babel/plugin-proposal-class-properties`,
43+
* make sure that `@babel/plugin-proposal-decorators` comes before `@babel/plugin-proposal-class-properties`.
44+
*/
3945
[require.resolve('@babel/plugin-proposal-decorators'), { legacy: true }],
4046
],
4147
};
4248

4349
if (!babelOptions.envName) {
4450
babelOptions.envName = process.env.BABEL_ENV;
4551
}
46-
52+
const runtimeVersion = semver.clean(require('@babel/runtime/package.json').version);
4753
if (cjs) {
4854
babelOptions.presets.push([
49-
require.resolve('@babel/preset-env'),
50-
{
51-
loose: true,
52-
},
53-
]);
54-
babelOptions.envName = 'cjs';
55-
babelOptions.plugins.push([
56-
require.resolve('@babel/plugin-transform-runtime'), {
57-
useESModules: false,
58-
loose: false,
55+
require.resolve('@babel/preset-env'), {
5956
modules: 'cjs',
60-
// https://github.com/babel/babel/issues/10261#issuecomment-549940457
61-
version: require('@babel/helpers/package.json').version,
57+
loose: false,
6258
},
6359
]);
60+
babelOptions.envName = 'cjs';
61+
const transformRuntime = {
62+
modules: 'cjs',
63+
loose: false,
64+
/**
65+
* transform-runtime regression, not requiring _objectSpread helper
66+
* https://github.com/babel/babel/issues/10261#issuecomment-549940457
67+
*/
68+
version: require('@babel/helpers/package.json').version,
69+
};
70+
if (!semver.gte(runtimeVersion, '7.13.0')) {
71+
/**
72+
* ⚠️ This option has been deprecated: starting from version 7.13.0,
73+
* @babel/runtime's package.json uses "exports" option to automatically choose between CJS and ESM helpers.
74+
* https://babeljs.io/docs/en/babel-plugin-transform-runtime#useesmodules
75+
*/
76+
(transformRuntime as any).useESModules = !semver.gte(runtimeVersion, '7.13.0');
77+
}
78+
babelOptions.plugins.push([require.resolve('@babel/plugin-transform-runtime'), transformRuntime]);
6479
babelOptions.plugins.push([require.resolve('babel-plugin-transform-remove-imports'), {
6580
test: "\\.(less|css)$"
6681
}]);
67-
babelOptions.plugins.push(["@babel/plugin-proposal-class-properties", { loose: true }]);
68-
babelOptions.plugins.push(["@babel/plugin-transform-classes", { loose: true }]);
82+
babelOptions.plugins.push(["@babel/plugin-proposal-class-properties", { loose: false }]);
83+
babelOptions.plugins.push(["@babel/plugin-transform-classes", { loose: false }]);
6984
}
7085

7186
if (esm) {
72-
const runtimeVersion = semver.clean(require('@babel/runtime/package.json').version);
7387
babelOptions.presets.push([
7488
require.resolve('@babel/preset-env'), {
7589
modules: false,
@@ -81,21 +95,26 @@ export function transform(filename: string, options?: TransformHandleOptions): P
8195
]);
8296
babelOptions.envName = 'esm';
8397
const transformRuntime = {
84-
useESModules: true,
8598
loose: false,
8699
modules: 'auto',
87-
// https://github.com/babel/babel/issues/10261#issuecomment-549940457
100+
/**
101+
* transform-runtime regression, not requiring _objectSpread helper
102+
* https://github.com/babel/babel/issues/10261#issuecomment-549940457
103+
*/
88104
version: require('@babel/helpers/package.json').version,
89105
};
90106
if (!semver.gte(runtimeVersion, '7.13.0')) {
91-
transformRuntime.useESModules = !semver.gte(runtimeVersion, '7.13.0');
107+
/**
108+
* ⚠️ This option has been deprecated: starting from version 7.13.0,
109+
* @babel/runtime's package.json uses "exports" option to automatically choose between CJS and ESM helpers.
110+
* https://babeljs.io/docs/en/babel-plugin-transform-runtime#useesmodules
111+
*/
112+
(transformRuntime as any).useESModules = !semver.gte(runtimeVersion, '7.13.0');
92113
}
93114
babelOptions.plugins.push([require.resolve('@babel/plugin-transform-runtime'), transformRuntime]);
94-
babelOptions.plugins.push([require.resolve('@babel/plugin-proposal-class-properties'), {
95-
loose: true
96-
}]);
115+
babelOptions.plugins.push([require.resolve('@babel/plugin-proposal-class-properties'), { loose: true }]);
97116
babelOptions.plugins.push([require.resolve('babel-plugin-transform-rename-import'), {
98-
original: '^(.+?)\\.less$', replacement: '$1.css'
117+
original: '^(.+?)\\.(less|scss|sass|styl)$', replacement: '$1.css'
99118
}]);
100119
}
101120
if (envName) {

0 commit comments

Comments
 (0)
Please sign in to comment.