Skip to content

Commit 202ebb4

Browse files
authored
Merge pull request #2775 from kevinji/add-typescript-peer-deps
Specify ts-node and typescript as optional peerDependencies
2 parents 18f11e4 + 3fd3756 commit 202ebb4

File tree

3 files changed

+37
-7
lines changed

3 files changed

+37
-7
lines changed

.changeset/lucky-hounds-mix.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"hardhat": patch
3+
---
4+
5+
Specify ts-node and typescript as optional peerDependencies

packages/hardhat-core/package.json

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,18 @@
143143
"uuid": "^8.3.2",
144144
"ws": "^7.4.6"
145145
},
146+
"peerDependencies": {
147+
"ts-node": "*",
148+
"typescript": "*"
149+
},
150+
"peerDependenciesMeta": {
151+
"ts-node": {
152+
"optional": true
153+
},
154+
"typescript": {
155+
"optional": true
156+
}
157+
},
146158
"nyc": {
147159
"extension": [
148160
".ts"

scripts/check-dependencies.js

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@ const path = require("path");
33

44
// An array of dependencies whose version checks are ignored for all the
55
// packages
6-
const IGNORE_FROM_ALL = ["web3", "hardhat"];
6+
const IGNORE_SAME_VERSION_FROM_ALL = ["web3", "hardhat"];
77

88
// A map from dependencies to package names where it should be ignored
9-
const IGNORE_FOR_PACKAGES = {
9+
const IGNORE_SAME_VERSION_FOR_PACKAGES = {
1010
chai: ["@nomiclabs/hardhat-truffle4", "@nomiclabs/hardhat-truffle5"],
1111
"@types/chai": ["@nomiclabs/hardhat-truffle4", "@nomiclabs/hardhat-truffle5"],
1212
"truffle-contract": [
@@ -20,10 +20,15 @@ const IGNORE_FOR_PACKAGES = {
2020
eslint: ["docs"],
2121
["eslint-config-prettier"]: ["docs"],
2222
["eslint-plugin-prettier"]: ["docs"],
23-
["typescript"]: ["docs"],
2423
["glob"]: ["docs"],
2524
["undici"]: ["docs"],
26-
["ts-node"]: ["docs"],
25+
["ts-node"]: ["docs", "hardhat"],
26+
["typescript"]: ["docs", "hardhat"],
27+
};
28+
29+
const IGNORE_PEER_DEPENDENCIES_CHECK_FOR_PACKAGES = {
30+
typescript: ["hardhat"],
31+
["ts-node"]: ["hardhat"],
2732
};
2833

2934
function checkPeerDepedencies(packageJson) {
@@ -41,6 +46,14 @@ function checkPeerDepedencies(packageJson) {
4146

4247
let success = true;
4348
for (const dependency of Object.keys(packageJson.peerDependencies)) {
49+
if (
50+
IGNORE_PEER_DEPENDENCIES_CHECK_FOR_PACKAGES[dependency]?.includes(
51+
packageJson.name
52+
)
53+
) {
54+
continue;
55+
}
56+
4457
if (packageJson.devDependencies[dependency] === undefined) {
4558
console.error(
4659
`${packageJson.name} has ${dependency} as peerDependency, but not as devDependency`
@@ -72,13 +85,13 @@ function addDependencies(packageName, dependenciesToAdd, allDependenciesMap) {
7285
}
7386

7487
for (const [name, spec] of Object.entries(dependenciesToAdd)) {
75-
if (IGNORE_FROM_ALL.includes(name)) {
88+
if (IGNORE_SAME_VERSION_FROM_ALL.includes(name)) {
7689
continue;
7790
}
7891

7992
if (
80-
IGNORE_FOR_PACKAGES[name] !== undefined &&
81-
IGNORE_FOR_PACKAGES[name].includes(packageName)
93+
IGNORE_SAME_VERSION_FOR_PACKAGES[name] !== undefined &&
94+
IGNORE_SAME_VERSION_FOR_PACKAGES[name].includes(packageName)
8295
) {
8396
continue;
8497
}

0 commit comments

Comments
 (0)