check-peer-dependencies 4.1.0 → 4.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.idea/workspace.xml +32 -25
- package/CHANGELOG.md +11 -0
- package/README.md +2 -0
- package/dist/cli.js +0 -0
- package/dist/packageManager.js +2 -2
- package/dist/packageUtils.js +17 -15
- package/package.json +1 -1
- package/dist/check_peer_dependencies.js +0 -77
- package/dist/resolvePackageDir.js +0 -20
package/.idea/workspace.xml
CHANGED
|
@@ -22,9 +22,7 @@
|
|
|
22
22
|
<select />
|
|
23
23
|
</component>
|
|
24
24
|
<component name="ChangeListManager">
|
|
25
|
-
<list default="true" id="ebeb713d-6dc4-42d1-a42e-54aad95d9c0a" name="Default Changelist" comment="
|
|
26
|
-
<change beforePath="$PROJECT_DIR$/src/checkPeerDependencies.ts" beforeDir="false" afterPath="$PROJECT_DIR$/src/checkPeerDependencies.ts" afterDir="false" />
|
|
27
|
-
<change beforePath="$PROJECT_DIR$/src/cli.ts" beforeDir="false" afterPath="$PROJECT_DIR$/src/cli.ts" afterDir="false" />
|
|
25
|
+
<list default="true" id="ebeb713d-6dc4-42d1-a42e-54aad95d9c0a" name="Default Changelist" comment="feat: detect yarn2 lockfile (and then use 'yarn up') Note: yarn2 pnp will likely never be supported">
|
|
28
26
|
<change beforePath="$PROJECT_DIR$/src/packageUtils.ts" beforeDir="false" afterPath="$PROJECT_DIR$/src/packageUtils.ts" afterDir="false" />
|
|
29
27
|
</list>
|
|
30
28
|
<option name="SHOW_DIALOG" value="false" />
|
|
@@ -33,9 +31,22 @@
|
|
|
33
31
|
<option name="LAST_RESOLUTION" value="IGNORE" />
|
|
34
32
|
</component>
|
|
35
33
|
<component name="Git.Settings">
|
|
34
|
+
<option name="RECENT_BRANCH_BY_REPOSITORY">
|
|
35
|
+
<map>
|
|
36
|
+
<entry key="$PROJECT_DIR$" value="yarn2-sorta-notreally" />
|
|
37
|
+
</map>
|
|
38
|
+
</option>
|
|
36
39
|
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
|
|
37
40
|
<option name="UPDATE_TYPE" value="REBASE" />
|
|
38
41
|
</component>
|
|
42
|
+
<component name="GitSEFilterConfiguration">
|
|
43
|
+
<file-type-list>
|
|
44
|
+
<filtered-out-file-type name="LOCAL_BRANCH" />
|
|
45
|
+
<filtered-out-file-type name="REMOTE_BRANCH" />
|
|
46
|
+
<filtered-out-file-type name="TAG" />
|
|
47
|
+
<filtered-out-file-type name="COMMIT_BY_MESSAGE" />
|
|
48
|
+
</file-type-list>
|
|
49
|
+
</component>
|
|
39
50
|
<component name="GitToolBoxStore">
|
|
40
51
|
<option name="projectConfigVersion" value="2" />
|
|
41
52
|
<option name="recentBranches">
|
|
@@ -58,6 +69,9 @@
|
|
|
58
69
|
</RecentBranches>
|
|
59
70
|
</option>
|
|
60
71
|
</component>
|
|
72
|
+
<component name="MarkdownSettingsMigration">
|
|
73
|
+
<option name="stateVersion" value="1" />
|
|
74
|
+
</component>
|
|
61
75
|
<component name="ProjectId" id="1SkfJRmHXPtjMGY19cBVwFevkIM" />
|
|
62
76
|
<component name="ProjectLevelVcsManager">
|
|
63
77
|
<OptionsSetting value="false" id="Update" />
|
|
@@ -68,22 +82,16 @@
|
|
|
68
82
|
<option name="hideEmptyMiddlePackages" value="true" />
|
|
69
83
|
<option name="showLibraryContents" value="true" />
|
|
70
84
|
</component>
|
|
71
|
-
<component name="PropertiesComponent"
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
<property name="nodejs_npm_path_reset_for_default_project" value="true" />
|
|
82
|
-
<property name="nodejs_package_manager_path" value="yarn" />
|
|
83
|
-
<property name="settings.editor.selected.configurable" value="preferences.pluginManager" />
|
|
84
|
-
<property name="ts.external.directory.path" value="$PROJECT_DIR$/node_modules/typescript/lib" />
|
|
85
|
-
<property name="vue.rearranger.settings.migration" value="true" />
|
|
86
|
-
</component>
|
|
85
|
+
<component name="PropertiesComponent"><![CDATA[{
|
|
86
|
+
"keyToString": {
|
|
87
|
+
"node.js.detected.package.eslint": "true",
|
|
88
|
+
"node.js.detected.package.tslint": "true",
|
|
89
|
+
"node.js.selected.package.eslint": "(autodetect)",
|
|
90
|
+
"node.js.selected.package.tslint": "(autodetect)",
|
|
91
|
+
"nodejs_package_manager_path": "yarn",
|
|
92
|
+
"ts.external.directory.path": "/Users/chris/projects/check-peer-dependencies/node_modules/typescript/lib"
|
|
93
|
+
}
|
|
94
|
+
}]]></component>
|
|
87
95
|
<component name="RecentsManager">
|
|
88
96
|
<key name="es6.move.members.recent.items">
|
|
89
97
|
<recent name="$PROJECT_DIR$/src/packageUtils.ts" />
|
|
@@ -306,13 +314,8 @@
|
|
|
306
314
|
</entry>
|
|
307
315
|
</map>
|
|
308
316
|
</option>
|
|
309
|
-
<option name="oldMeFiltersMigrated" value="true" />
|
|
310
317
|
</component>
|
|
311
318
|
<component name="VcsManagerConfiguration">
|
|
312
|
-
<MESSAGE value="chore: add shelljs dependency" />
|
|
313
|
-
<MESSAGE value="chore: add yargs and shelljs dependency" />
|
|
314
|
-
<MESSAGE value="chore: add yargs and shelljs and semver dependencies" />
|
|
315
|
-
<MESSAGE value="refactor: extract cli.ts" />
|
|
316
319
|
<MESSAGE value="fix(packageManager): remove console.log, switch to boolean parameters" />
|
|
317
320
|
<MESSAGE value="fix(checkPeerDependencies): check for yalc'd packages using installedVersion, not dependerVersion" />
|
|
318
321
|
<MESSAGE value="chore: Add README.md and CHANGELOG.md" />
|
|
@@ -334,6 +337,10 @@
|
|
|
334
337
|
<MESSAGE value="feat(peerDependencyMeta): support peerDependencyMeta in package.json to ignore optional peer dependencies" />
|
|
335
338
|
<MESSAGE value="feat(prerelease): include prerelease when matching ranges, i.e. the range ">=6.0.0" matches "7.0.0-beta.1" BREAKING CHANGE: Matches prerelease versions" />
|
|
336
339
|
<MESSAGE value="chore: update all dependencies" />
|
|
337
|
-
<
|
|
340
|
+
<MESSAGE value="feat: load checkPeerDependencies config from package.json (and merge with CLI options)" />
|
|
341
|
+
<MESSAGE value="feat: Add support for ignoring peer dependencies (via cli option or config stored in package.json)" />
|
|
342
|
+
<MESSAGE value="fix: Install peer deps as devDependencies if the peer dep came from a dev dependency fix: Properly install dev dependencies when using npm as the package manager" />
|
|
343
|
+
<MESSAGE value="feat: detect yarn2 lockfile (and then use 'yarn up') Note: yarn2 pnp will likely never be supported" />
|
|
344
|
+
<option name="LAST_COMMIT_MESSAGE" value="feat: detect yarn2 lockfile (and then use 'yarn up') Note: yarn2 pnp will likely never be supported" />
|
|
338
345
|
</component>
|
|
339
346
|
</project>
|
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,14 @@
|
|
|
1
|
+
# 4.2.0 (2023-03-13)
|
|
2
|
+
[Compare `check-peer-dependencies` versions 4.1.0 and 4.2.0](https://github.com/christopherthielen/check-peer-dependencies/compare/4.1.0...4.2.0)
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* Install peer deps as devDependencies if the peer dep came from a dev dependency ([6ef3021](https://github.com/christopherthielen/check-peer-dependencies/commit/6ef3021)), closes [#21](https://github.com/christopherthielen/check-peer-dependencies/issues/21)
|
|
7
|
+
* Method for determining the installed version fails [#27](https://github.com/christopherthielen/check-peer-dependencies/issues/27) ([8058585](https://github.com/christopherthielen/check-peer-dependencies/commit/8058585))
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
1
12
|
# 4.1.0 (2021-11-28)
|
|
2
13
|
[Compare `check-peer-dependencies` versions 4.0.0 and 4.1.0](https://github.com/christopherthielen/check-peer-dependencies/compare/4.0.0...4.1.0)
|
|
3
14
|
|
package/README.md
CHANGED
|
@@ -27,6 +27,8 @@ Options:
|
|
|
27
27
|
[boolean] [default: false]
|
|
28
28
|
--verbose Prints every peer dependency, even those that
|
|
29
29
|
are met [boolean] [default: false]
|
|
30
|
+
--ignore package name to ignore (may specify multiple)
|
|
31
|
+
[array] [default: []]
|
|
30
32
|
--runOnlyOnRootDependencies Run tool only on package root dependencies
|
|
31
33
|
[boolean] [default: false]
|
|
32
34
|
--findSolutions Search for solutions and print package
|
package/dist/cli.js
CHANGED
|
File without changes
|
package/dist/packageManager.js
CHANGED
|
@@ -29,12 +29,12 @@ function getCommandLines(packageManager, resolutions) {
|
|
|
29
29
|
commands.push("yarn upgrade " + upgrades.join(' '));
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
|
-
else if (packageManager === 'npm' && (installs.length || upgrades.length)) {
|
|
32
|
+
else if (packageManager === 'npm' && (installs.length || upgrades.length || devInstalls.length)) {
|
|
33
33
|
if (installs.length || upgrades.length) {
|
|
34
34
|
commands.push("npm install " + installs.concat(upgrades).join(' '));
|
|
35
35
|
}
|
|
36
36
|
if (devInstalls.length) {
|
|
37
|
-
commands.push("npm install -D " +
|
|
37
|
+
commands.push("npm install -D " + devInstalls);
|
|
38
38
|
}
|
|
39
39
|
}
|
|
40
40
|
return commands;
|
package/dist/packageUtils.js
CHANGED
|
@@ -10,14 +10,14 @@ function gatherPeerDependencies(packagePath, options) {
|
|
|
10
10
|
var visitor = function (path, json, deps) {
|
|
11
11
|
peerDeps = peerDeps.concat(deps.peerDependencies);
|
|
12
12
|
};
|
|
13
|
-
walkPackageDependencyTree(packagePath, visitor, [], options);
|
|
13
|
+
walkPackageDependencyTree(packagePath, false, visitor, [], options);
|
|
14
14
|
// Eliminate duplicates
|
|
15
15
|
return peerDeps.reduce(function (acc, dep) {
|
|
16
16
|
return acc.some(function (dep2) { return isSameDep(dep, dep2); }) ? acc : acc.concat(dep);
|
|
17
17
|
}, []);
|
|
18
18
|
}
|
|
19
19
|
exports.gatherPeerDependencies = gatherPeerDependencies;
|
|
20
|
-
function walkPackageDependencyTree(packagePath, visitor, visitedPaths, options) {
|
|
20
|
+
function walkPackageDependencyTree(packagePath, isAncestorDevDependency, visitor, visitedPaths, options) {
|
|
21
21
|
var isRootPackage = visitedPaths.length === 0;
|
|
22
22
|
if (visitedPaths.includes(packagePath)) {
|
|
23
23
|
return;
|
|
@@ -28,13 +28,13 @@ function walkPackageDependencyTree(packagePath, visitor, visitedPaths, options)
|
|
|
28
28
|
throw new Error("package.json missing at " + packageJsonPath + ".");
|
|
29
29
|
}
|
|
30
30
|
var packageJson = readJson_1.readJson(packageJsonPath);
|
|
31
|
-
var packageDependencies = getPackageMeta(packagePath, packageJson);
|
|
31
|
+
var packageDependencies = getPackageMeta(packagePath, packageJson, isAncestorDevDependency);
|
|
32
32
|
if (options.debug) {
|
|
33
33
|
console.log(packageJsonPath);
|
|
34
34
|
packageDependencies.peerDependencies.forEach(function (dep) { return console.log(dep); });
|
|
35
35
|
}
|
|
36
36
|
visitor(packagePath, packageJson, packageDependencies);
|
|
37
|
-
function walkDependency(dependency) {
|
|
37
|
+
function walkDependency(dependency, isAncestorDevDependency) {
|
|
38
38
|
if (resolve.isCore(dependency.name)) {
|
|
39
39
|
return;
|
|
40
40
|
}
|
|
@@ -51,15 +51,15 @@ function walkPackageDependencyTree(packagePath, visitor, visitedPaths, options)
|
|
|
51
51
|
throw new Error("WARN: Unable to resolve package " + dependency.name + " from " + packagePath);
|
|
52
52
|
}
|
|
53
53
|
}
|
|
54
|
-
walkPackageDependencyTree(dependencyPath, visitor, visitedPaths, options);
|
|
54
|
+
walkPackageDependencyTree(dependencyPath, isAncestorDevDependency, visitor, visitedPaths, options);
|
|
55
55
|
}
|
|
56
56
|
if (isRootPackage)
|
|
57
|
-
packageDependencies.devDependencies.forEach(walkDependency);
|
|
57
|
+
packageDependencies.devDependencies.forEach(function (dep) { return walkDependency(dep, true); });
|
|
58
58
|
if (isRootPackage || !options.runOnlyOnRootDependencies)
|
|
59
|
-
packageDependencies.dependencies.forEach(walkDependency);
|
|
59
|
+
packageDependencies.dependencies.forEach(function (dep) { return walkDependency(dep, false); });
|
|
60
60
|
}
|
|
61
61
|
exports.walkPackageDependencyTree = walkPackageDependencyTree;
|
|
62
|
-
function buildDependencyArray(type, pkgJson, depender) {
|
|
62
|
+
function buildDependencyArray(type, pkgJson, depender, isAncestorDevDependency) {
|
|
63
63
|
var dependenciesObject = pkgJson[type] || {};
|
|
64
64
|
var peerDependenciesMeta = pkgJson.peerDependenciesMeta || {};
|
|
65
65
|
// backwards compat
|
|
@@ -68,7 +68,7 @@ function buildDependencyArray(type, pkgJson, depender) {
|
|
|
68
68
|
return packageNames.map(function (name) {
|
|
69
69
|
var _a, _b;
|
|
70
70
|
var isPeerOptionalDependency = !!((_a = peerDependenciesMeta[name]) === null || _a === void 0 ? void 0 : _a.optional);
|
|
71
|
-
var isPeerDevDependency = !!((_b = peerDependenciesMeta[name]) === null || _b === void 0 ? void 0 : _b.dev) || !!peerDevDependencies.includes(name);
|
|
71
|
+
var isPeerDevDependency = isAncestorDevDependency || !!((_b = peerDependenciesMeta[name]) === null || _b === void 0 ? void 0 : _b.dev) || !!peerDevDependencies.includes(name);
|
|
72
72
|
return {
|
|
73
73
|
name: name,
|
|
74
74
|
type: type,
|
|
@@ -79,13 +79,13 @@ function buildDependencyArray(type, pkgJson, depender) {
|
|
|
79
79
|
};
|
|
80
80
|
});
|
|
81
81
|
}
|
|
82
|
-
function getPackageMeta(packagePath, packageJson) {
|
|
82
|
+
function getPackageMeta(packagePath, packageJson, isAncestorDevDependency) {
|
|
83
83
|
var name = packageJson.name, version = packageJson.version;
|
|
84
84
|
var packageMeta = { name: name, version: version, packagePath: packagePath };
|
|
85
|
-
packageMeta.dependencies = buildDependencyArray("dependencies", packageJson, packageMeta);
|
|
86
|
-
packageMeta.devDependencies = buildDependencyArray("devDependencies", packageJson, packageMeta);
|
|
87
|
-
packageMeta.optionalDependencies = buildDependencyArray("optionalDependencies", packageJson, packageMeta);
|
|
88
|
-
packageMeta.peerDependencies = buildDependencyArray("peerDependencies", packageJson, packageMeta);
|
|
85
|
+
packageMeta.dependencies = buildDependencyArray("dependencies", packageJson, packageMeta, isAncestorDevDependency);
|
|
86
|
+
packageMeta.devDependencies = buildDependencyArray("devDependencies", packageJson, packageMeta, isAncestorDevDependency);
|
|
87
|
+
packageMeta.optionalDependencies = buildDependencyArray("optionalDependencies", packageJson, packageMeta, isAncestorDevDependency);
|
|
88
|
+
packageMeta.peerDependencies = buildDependencyArray("peerDependencies", packageJson, packageMeta, isAncestorDevDependency);
|
|
89
89
|
return packageMeta;
|
|
90
90
|
}
|
|
91
91
|
exports.getPackageMeta = getPackageMeta;
|
|
@@ -94,7 +94,9 @@ function resolvePackageDir(basedir, packageName) {
|
|
|
94
94
|
// In resolve() v2.x this callback has a different signature
|
|
95
95
|
// function packageFilter(pkg, pkgfile, pkgdir) {
|
|
96
96
|
function packageFilter(pkg, pkgdir) {
|
|
97
|
-
packagePath
|
|
97
|
+
if (!packagePath || pkg.version) {
|
|
98
|
+
packagePath = pkgdir;
|
|
99
|
+
}
|
|
98
100
|
return pkg;
|
|
99
101
|
}
|
|
100
102
|
try {
|
package/package.json
CHANGED
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
"use strict";
|
|
3
|
-
var __assign = (this && this.__assign) || function () {
|
|
4
|
-
__assign = Object.assign || function(t) {
|
|
5
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
6
|
-
s = arguments[i];
|
|
7
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
8
|
-
t[p] = s[p];
|
|
9
|
-
}
|
|
10
|
-
return t;
|
|
11
|
-
};
|
|
12
|
-
return __assign.apply(this, arguments);
|
|
13
|
-
};
|
|
14
|
-
exports.__esModule = true;
|
|
15
|
-
var path = require("path");
|
|
16
|
-
var semver = require("semver");
|
|
17
|
-
var shelljs_1 = require("shelljs");
|
|
18
|
-
var packageManager_1 = require("./packageManager");
|
|
19
|
-
var packageUtils_1 = require("./packageUtils");
|
|
20
|
-
var readJson_1 = require("./readJson");
|
|
21
|
-
var solution_1 = require("./solution");
|
|
22
|
-
function checkPeerDependencies(packageManager, installMissingPeerDependencies) {
|
|
23
|
-
var allNestedPeerDependencies = packageUtils_1.gatherPeerDependencies(".").map(function (dep) {
|
|
24
|
-
var installedVersion = getInstalledVersion(dep);
|
|
25
|
-
var semverSatisfies = installedVersion ? semver.satisfies(installedVersion, dep.version) : false;
|
|
26
|
-
return __assign(__assign({}, dep), { installedVersion: installedVersion, semverSatisfies: semverSatisfies });
|
|
27
|
-
}).sort(function (a, b) { return ("" + a.name + a.depender).localeCompare("" + b.name + b.depender); });
|
|
28
|
-
allNestedPeerDependencies.forEach(function (dep) {
|
|
29
|
-
if (dep.semverSatisfies) {
|
|
30
|
-
console.log("\u2705 " + dep.depender + " requires " + dep.name + " " + dep.version + " and " + dep.installedVersion + " is installed");
|
|
31
|
-
}
|
|
32
|
-
else if (dep.installedVersion) {
|
|
33
|
-
console.log("\u274C " + dep.depender + " requires " + dep.name + " " + dep.version + ", but " + dep.name + " is not installed");
|
|
34
|
-
}
|
|
35
|
-
else {
|
|
36
|
-
console.log("\u274C " + dep.depender + " requires " + dep.name + " " + dep.version + ", but " + dep.installedVersion + " is installed");
|
|
37
|
-
}
|
|
38
|
-
});
|
|
39
|
-
var problems = allNestedPeerDependencies.filter(function (dep) { return !dep.semverSatisfies && !/file:\.yalc/.exec(dep.dependerVersion); });
|
|
40
|
-
if (!problems.length) {
|
|
41
|
-
console.log('No problems found!');
|
|
42
|
-
return;
|
|
43
|
-
}
|
|
44
|
-
console.log('Searching for solutions:');
|
|
45
|
-
var resolutions = solution_1.findPossibleResolutions(problems, allNestedPeerDependencies);
|
|
46
|
-
var installs = resolutions.filter(function (r) { return r.resolutionType === 'install'; }).map(function (r) { return r.resolution; });
|
|
47
|
-
var upgrades = resolutions.filter(function (r) { return r.resolutionType === 'upgrade'; }).map(function (r) { return r.resolution; });
|
|
48
|
-
var nosolution = resolutions.filter(function (r) { return !r.resolution; });
|
|
49
|
-
nosolution.forEach(function (solution) {
|
|
50
|
-
var name = solution.problem.name;
|
|
51
|
-
var errorPrefix = "Unable to find a version of " + name + " that satisfies the following peerDependencies:";
|
|
52
|
-
var peerDepRanges = allNestedPeerDependencies.filter(function (dep) { return dep.name === name; })
|
|
53
|
-
.reduce(function (acc, dep) { return acc.includes(dep.version) ? acc : acc.concat(dep.version); }, []);
|
|
54
|
-
console.error("\u274C\u274C\u274C " + errorPrefix + " " + peerDepRanges.join(" and ") + " \u274C\u274C\u274C");
|
|
55
|
-
});
|
|
56
|
-
var commandLines = packageManager_1.getCommandLines(packageManager, installs, upgrades);
|
|
57
|
-
if (nosolution.length) {
|
|
58
|
-
console.error();
|
|
59
|
-
}
|
|
60
|
-
if (installMissingPeerDependencies) {
|
|
61
|
-
console.log('Installing peerDependencies...');
|
|
62
|
-
commandLines.forEach(function (command) { return shelljs_1.exec(command); });
|
|
63
|
-
}
|
|
64
|
-
else {
|
|
65
|
-
commandLines.forEach(function (command) { return console.log(command); });
|
|
66
|
-
console.log();
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
exports.checkPeerDependencies = checkPeerDependencies;
|
|
70
|
-
function getInstalledVersion(dep) {
|
|
71
|
-
var peerDependencyDir = packageUtils_1.resolvePackageDir(".", dep.name);
|
|
72
|
-
if (!peerDependencyDir) {
|
|
73
|
-
return undefined;
|
|
74
|
-
}
|
|
75
|
-
var packageJson = readJson_1.readJson(path.resolve(peerDependencyDir, 'package.json'));
|
|
76
|
-
return packageJson.version;
|
|
77
|
-
}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
exports.__esModule = true;
|
|
3
|
-
var resolve = require("resolve");
|
|
4
|
-
function resolvePackageDir(basedir, packageName) {
|
|
5
|
-
var packagePath;
|
|
6
|
-
function packageFilter(pkg, pkgfile) {
|
|
7
|
-
packagePath = pkgfile;
|
|
8
|
-
return pkg;
|
|
9
|
-
}
|
|
10
|
-
try {
|
|
11
|
-
resolve.sync(packageName, { basedir: basedir, packageFilter: packageFilter });
|
|
12
|
-
}
|
|
13
|
-
catch (ignored) {
|
|
14
|
-
// resolve.sync throws if no main: is present
|
|
15
|
-
// Some packages (such as @types/*) do not have a main
|
|
16
|
-
// As long as we have a packagePath, it's fine
|
|
17
|
-
}
|
|
18
|
-
return packagePath;
|
|
19
|
-
}
|
|
20
|
-
exports.resolvePackageDir = resolvePackageDir;
|