Skip to content

Commit dd77d39

Browse files
committed
fix: update package.json validation
1 parent eb984f2 commit dd77d39

File tree

4 files changed

+93
-28
lines changed

4 files changed

+93
-28
lines changed

src/commands/build.ts

Lines changed: 25 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import * as rollup from "rollup";
2+
import * as assert from "assert";
23
import * as fse from "fs-extra";
34
import generatePackageJson from "rollup-plugin-generate-package-json";
45
import { autoExternal } from "../rollup-plugins/auto-external";
@@ -430,26 +431,39 @@ function rewritePackageJson(pkg: Record<string, any>, distPath: string) {
430431
}
431432

432433
export function validatePackageJson(pkg: any) {
433-
function expect(key: string, expected: string) {
434+
function expect(key: string, expected: unknown) {
434435
const received = get(pkg, key);
435436

436-
if (expected !== received) {
437-
throw new Error(
438-
`${pkg.name}: "${key}" equals "${received}", should be "${expected}"`
439-
);
440-
}
437+
assert.deepEqual(
438+
received,
439+
expected,
440+
`${pkg.name}: "${key}" equals "${JSON.stringify(received)}"` +
441+
`, should be "${JSON.stringify(expected)}".\n` +
442+
`!!! You can run 'bob bootstrap' for fixing your package.json. !!!`
443+
);
441444
}
442445

443446
expect("main", `${DIST_DIR}/index.js`);
444447
expect("module", `${DIST_DIR}/index.mjs`);
445448
expect("typings", `${DIST_DIR}/index.d.ts`);
446449
expect("typescript.definition", `${DIST_DIR}/index.d.ts`);
447450

448-
expect("exports['.'].require", `./${DIST_DIR}/index.js`);
449-
expect("exports['.'].import", `./${DIST_DIR}/index.mjs`);
450-
451-
expect("exports['./*'].require", `./${DIST_DIR}/*.js`);
452-
expect("exports['./*'].import", `./${DIST_DIR}/*.mjs`);
451+
expect("exports['.'].require", {
452+
default: `./${DIST_DIR}/index.js`,
453+
types: `./${DIST_DIR}/index.d.ts`,
454+
});
455+
expect("exports['.'].import", {
456+
default: `./${DIST_DIR}/index.mjs`,
457+
types: `./${DIST_DIR}/index.d.ts`,
458+
});
459+
expect("exports['./*'].require", {
460+
default: `./${DIST_DIR}/*.js`,
461+
types: `./${DIST_DIR}/*.d.ts`,
462+
});
463+
expect("exports['./*'].import", {
464+
default: `./${DIST_DIR}/*.mjs`,
465+
types: `./${DIST_DIR}/*.d.ts`,
466+
});
453467
}
454468

455469
async function copyToDist(cwd: string, files: string[], distDir: string) {

test/__fixtures__/simple-monorepo/packages/a/package.json

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,32 @@
88
},
99
"exports": {
1010
".": {
11-
"require": "./dist/index.js",
12-
"import": "./dist/index.mjs"
11+
"require": {
12+
"default": "./dist/index.js",
13+
"types": "./dist/index.d.ts"
14+
},
15+
"import": {
16+
"default": "./dist/index.mjs",
17+
"types": "./dist/index.d.ts"
18+
}
1319
},
1420
"./*": {
15-
"require": "./dist/*.js",
16-
"import": "./dist/*.mjs"
17-
}
21+
"require": {
22+
"default": "./dist/*.js",
23+
"types": "./dist/*.d.ts"
24+
},
25+
"import": {
26+
"default": "./dist/*.mjs",
27+
"types": "./dist/*.d.ts"
28+
}
29+
},
30+
"./package.json": "./package.json"
1831
},
1932
"buildOptions": {
2033
"input": "./src/index.ts"
34+
},
35+
"publishConfig": {
36+
"directory": "dist",
37+
"access": "public"
2138
}
22-
}
39+
}

test/__fixtures__/simple-monorepo/packages/b/package.json

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,32 @@
88
},
99
"exports": {
1010
".": {
11-
"require": "./dist/index.js",
12-
"import": "./dist/index.mjs"
11+
"require": {
12+
"default": "./dist/index.js",
13+
"types": "./dist/index.d.ts"
14+
},
15+
"import": {
16+
"default": "./dist/index.mjs",
17+
"types": "./dist/index.d.ts"
18+
}
1319
},
1420
"./*": {
15-
"require": "./dist/*.js",
16-
"import": "./dist/*.mjs"
17-
}
21+
"require": {
22+
"default": "./dist/*.js",
23+
"types": "./dist/*.d.ts"
24+
},
25+
"import": {
26+
"default": "./dist/*.mjs",
27+
"types": "./dist/*.d.ts"
28+
}
29+
},
30+
"./package.json": "./package.json"
1831
},
1932
"buildOptions": {
2033
"input": "./src/index.ts"
34+
},
35+
"publishConfig": {
36+
"directory": "dist",
37+
"access": "public"
2138
}
22-
}
39+
}

test/__fixtures__/simple/package.json

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,29 @@
88
},
99
"exports": {
1010
".": {
11-
"require": "./dist/index.js",
12-
"import": "./dist/index.mjs"
11+
"require": {
12+
"default": "./dist/index.js",
13+
"types": "./dist/index.d.ts"
14+
},
15+
"import": {
16+
"default": "./dist/index.mjs",
17+
"types": "./dist/index.d.ts"
18+
}
1319
},
1420
"./*": {
15-
"require": "./dist/*.js",
16-
"import": "./dist/*.mjs"
17-
}
21+
"require": {
22+
"default": "./dist/*.js",
23+
"types": "./dist/*.d.ts"
24+
},
25+
"import": {
26+
"default": "./dist/*.mjs",
27+
"types": "./dist/*.d.ts"
28+
}
29+
},
30+
"./package.json": "./package.json"
31+
},
32+
"publishConfig": {
33+
"directory": "dist",
34+
"access": "public"
1835
}
1936
}

0 commit comments

Comments
 (0)