Skip to content

Commit 272e6aa

Browse files
committed
fix: resolve peerDependencies
1 parent 553eb31 commit 272e6aa

File tree

2 files changed

+40
-12
lines changed

2 files changed

+40
-12
lines changed

template/javascript/build.js

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,17 +28,31 @@ const terserOptions = {
2828
format: { comments: false },
2929
};
3030

31+
async function resolvePeer(module) {
32+
if (!module) return;
33+
34+
try {
35+
const pkg = await fs.readJson(
36+
fileURLToPath(new URL(import.meta.resolve(`${module}/package.json`))),
37+
'utf8',
38+
);
39+
return pkg.peerDependencies;
40+
} catch {
41+
const arr = module.split('/');
42+
arr.pop();
43+
return resolvePeer(arr.join('/'));
44+
}
45+
}
46+
3147
const bundledModules = new Set();
3248
async function bundleModule(module) {
3349
if (bundledModules.has(module)) return;
3450
bundledModules.add(module);
3551

36-
const { peerDependencies } = await fs.readJson(fileURLToPath(
37-
new URL(import.meta.resolve(`${module}/package.json`)),
38-
), 'utf8');
52+
const peer = await resolvePeer(module);
3953
const bundle = await rollup({
4054
input: module,
41-
external: peerDependencies ? Object.keys(peerDependencies) : undefined,
55+
external: peer ? Object.keys(peer) : undefined,
4256
plugins: [
4357
commonjs(),
4458
replace({
@@ -58,14 +72,14 @@ async function bundleModule(module) {
5872
});
5973
}
6074

61-
function traverseAST(ast, onlyBabel = false) {
75+
function traverseAST(ast, babelOnly = false) {
6276
traverse.default(ast, {
6377
CallExpression({ node }) {
6478
if (
6579
node.callee.name !== 'require' ||
6680
!t.isStringLiteral(node.arguments[0]) ||
6781
node.arguments[0].value.startsWith('.') ||
68-
(onlyBabel && !node.arguments[0].value.startsWith('@babel/runtime'))
82+
(babelOnly && !node.arguments[0].value.startsWith('@babel/runtime'))
6983
) {
7084
return;
7185
}

template/typescript/build.js

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,17 +28,31 @@ const terserOptions = {
2828
format: { comments: false },
2929
};
3030

31+
async function resolvePeer(module) {
32+
if (!module) return;
33+
34+
try {
35+
const pkg = await fs.readJson(
36+
fileURLToPath(new URL(import.meta.resolve(`${module}/package.json`))),
37+
'utf8',
38+
);
39+
return pkg.peerDependencies;
40+
} catch {
41+
const arr = module.split('/');
42+
arr.pop();
43+
return resolvePeer(arr.join('/'));
44+
}
45+
}
46+
3147
const bundledModules = new Set();
3248
async function bundleModule(module) {
3349
if (bundledModules.has(module)) return;
3450
bundledModules.add(module);
3551

36-
const { peerDependencies } = await fs.readJson(fileURLToPath(
37-
new URL(import.meta.resolve(`${module}/package.json`)),
38-
), 'utf8');
52+
const peer = await resolvePeer(module);
3953
const bundle = await rollup({
4054
input: module,
41-
external: peerDependencies ? Object.keys(peerDependencies) : undefined,
55+
external: peer ? Object.keys(peer) : undefined,
4256
plugins: [
4357
commonjs(),
4458
replace({
@@ -58,14 +72,14 @@ async function bundleModule(module) {
5872
});
5973
}
6074

61-
function traverseAST(ast, onlyBabel = false) {
75+
function traverseAST(ast, babelOnly = false) {
6276
traverse.default(ast, {
6377
CallExpression({ node }) {
6478
if (
6579
node.callee.name !== 'require' ||
6680
!t.isStringLiteral(node.arguments[0]) ||
6781
node.arguments[0].value.startsWith('.') ||
68-
(onlyBabel && !node.arguments[0].value.startsWith('@babel/runtime'))
82+
(babelOnly && !node.arguments[0].value.startsWith('@babel/runtime'))
6983
) {
7084
return;
7185
}

0 commit comments

Comments
 (0)