Skip to content

Commit

Permalink
fix(father-build): babel runtime resolve logic (#484)
Browse files Browse the repository at this point in the history
* fix(father-build): babel runtime resolve logic

* test(father-build): add case for local babel runtime

* refactor(father-build): use real cwd for babel runtime

* refactor(father-build): use babel runtime version from project deps

* refactor(father-build): correct babel runtime for rollup mode
  • Loading branch information
PeachScript committed May 25, 2022
1 parent 2be23ea commit 6a13525
Show file tree
Hide file tree
Showing 9 changed files with 81 additions and 2 deletions.
1 change: 1 addition & 0 deletions packages/father-build/src/babel.ts
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,7 @@ export default async function (opts: IBabelOpts) {
nodeVersion,
lazy: cjs && cjs.lazy,
lessInBabelMode,
cwd,
});
if (importLibToEs && type === "esm") {
babelOpts.plugins.push(require.resolve("../lib/importLibToEs"));
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@

export default {
runtimeHelpers: true,
esm: { type: 'babel' },
cjs: { type: 'babel' },
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
import _createClass from "@babel/runtime/helpers/esm/createClass";

function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }

function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }

var A = /*#__PURE__*/function () {
function A() {
_classCallCheck(this, A);
}

_createClass(A, [{
key: "foo",
value: function foo() {}
}]);

return A;
}();

new A().foo();
var a = {};

var b = _objectSpread({}, a);
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
"use strict";

var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");

var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));

var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));

var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));

function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }

function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }

var A = /*#__PURE__*/function () {
function A() {
(0, _classCallCheck2.default)(this, A);
}

(0, _createClass2.default)(A, [{
key: "foo",
value: function foo() {}
}]);
return A;
}();

new A().foo();
var a = {};

var b = _objectSpread({}, a);
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"dependencies": {
"@babel/runtime": "7.0.0"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@

class A {
foo() {}
}

(new A()).foo();

const a = {};
const b = {...a};
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"dependencies": {
"@babel/runtime": "0.1.0"
"@babel/runtime": "7.10.4"
}
}
4 changes: 3 additions & 1 deletion packages/father-build/src/getBabelConfig.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ interface IGetBabelConfigOpts {
paths?: any[];
plugins?: any[];
};
cwd?: string;
}

function transformImportLess2Css() {
Expand Down Expand Up @@ -81,7 +82,8 @@ export default function(opts: IGetBabelConfigOpts) {
...(runtimeHelpers
? [[require.resolve('@babel/plugin-transform-runtime'), {
useESModules: isBrowser && (type === 'esm'),
version: require('@babel/runtime/package.json').version,
// use @babel/runtime version from project dependencies
version: require(`${opts.cwd}/package.json`).dependencies['@babel/runtime'],
}]]
: []),
...(process.env.COVERAGE
Expand Down
1 change: 1 addition & 0 deletions packages/father-build/src/getRollupConfig.ts
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,7 @@ export default function(opts: IGetRollupConfigOpts): RollupOptions[] {
typescript: true,
runtimeHelpers,
nodeVersion,
cwd,
}).opts),
// ref: https://github.com/rollup/plugins/tree/master/packages/babel#babelhelpers
babelHelpers: (runtimeHelpers ? 'runtime' : 'bundled') as RollupBabelInputPluginOptions['babelHelpers'],
Expand Down

0 comments on commit 6a13525

Please sign in to comment.