Skip to content

Commit 101a94d

Browse files
committed
Add support for bundleDependencies: true to bundle all
1 parent 59c7177 commit 101a94d

File tree

3 files changed

+69
-3
lines changed

3 files changed

+69
-3
lines changed

index.js

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -92,17 +92,23 @@ class BundleWalker extends EE {
9292
this.onPackage(this.package)
9393
}
9494

95+
allDepsBundled (pkg) {
96+
return Object.keys(pkg.dependencies || {}).concat(
97+
Object.keys(pkg.optionalDependencies || {}))
98+
}
99+
95100
onPackage (pkg) {
96101
// all deps are bundled if we got here as a child.
97102
// otherwise, only bundle bundledDeps
98103
// Get a unique-ified array with a short-lived Set
99104
const bdRaw = this.parent
100-
? Object.keys(pkg.dependencies || {}).concat(
101-
Object.keys(pkg.optionalDependencies || {}))
105+
? this.allDepsBundled(pkg)
102106
: pkg.bundleDependencies || pkg.bundledDependencies || []
103107

104108
const bd = Array.from(new Set(
105-
Array.isArray(bdRaw) ? bdRaw : Object.keys(bdRaw)))
109+
Array.isArray(bdRaw) ? bdRaw
110+
: bdRaw === true ? this.allDepsBundled(pkg)
111+
: Object.keys(bdRaw)))
106112

107113
if (!bd.length)
108114
return this.done()

test/all-bundle.js

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
'use strict'
2+
const t = require('tap')
3+
const path = require('path')
4+
const pkg = path.resolve(__dirname, path.basename(__filename, '.js'))
5+
6+
require('./pkgtree.js')(pkg, {
7+
$package: {
8+
name: 'a',
9+
version: '1.2.3',
10+
bundledDependencies: true,
11+
dependencies: {
12+
b: '1.2.3',
13+
d: '1.2.3'
14+
}
15+
},
16+
b: {
17+
d: { $package: {
18+
name: 'd',
19+
version: '1.2.3',
20+
dependencies: {
21+
e: '1.2.3'
22+
}
23+
}},
24+
$package: {
25+
name: 'b',
26+
version: '1.2.3',
27+
dependencies: {
28+
c: '1.2.3',
29+
d: '1.2.3'
30+
}
31+
}
32+
},
33+
c: { $package: {
34+
name: 'c',
35+
version: '1.2.3'
36+
}},
37+
d: { $package: {
38+
name: 'd',
39+
version: '1.2.3',
40+
dependencies: {
41+
c: '1.2.3'
42+
}
43+
}},
44+
e: { $package: {
45+
name: 'e',
46+
version: '1.2.3'
47+
}}
48+
}, t)
49+
50+
const walk = require('../')
51+
52+
const check = (result, t) => {
53+
t.same(result.sort(), ['b', 'c', 'd', 'e'])
54+
t.end()
55+
}
56+
57+
t.test('sync', t => check(walk.sync({path: pkg}), t))
58+
t.test('async', t => walk({path: pkg}).then(res => check(res, t)))

test/no-bundle.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ require('./pkgtree.js')(pkg, {
77
$package: {
88
name: 'a',
99
version: '1.2.3',
10+
bundledDependencies: false,
1011
dependencies: {
1112
b: '1.2.3',
1213
d: '1.2.3'
@@ -16,6 +17,7 @@ require('./pkgtree.js')(pkg, {
1617
d: { $package: {
1718
name: 'd',
1819
version: '1.2.3',
20+
bundleDependencies: false,
1921
dependencies: {
2022
e: '1.2.3'
2123
}

0 commit comments

Comments
 (0)