Skip to content

Commit 37d4510

Browse files
Sebastian McKenziebestander
authored andcommitted
don't allow for uninstallation of dependencies not in package.json (#145)
1 parent 19afa51 commit 37d4510

File tree

1 file changed

+18
-20
lines changed

1 file changed

+18
-20
lines changed

src/cli/commands/uninstall.js

Lines changed: 18 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -61,12 +61,6 @@ export async function run(
6161
let range;
6262
reporter.step(++step, totalSteps, `Removing module ${name}`);
6363

64-
// remove bins
65-
let pkg = await config.readManifest(loc);
66-
for (let binName in pkg.bin) {
67-
await fs.unlink(path.join(config.modulesFolder, "node_modules", ".bin", binName));
68-
}
69-
7064
// remove from `package.json`
7165
for (let type of ["devDependencies", "dependencies", "optionalDependencies"]) {
7266
let deps = json[type];
@@ -75,27 +69,31 @@ export async function run(
7569
delete deps[name];
7670
}
7771
}
72+
if (!range) {
73+
throw new MessageError("This module isn't specified in package.json");
74+
}
75+
76+
// remove bins
77+
let pkg = await config.readManifest(loc);
78+
for (let binName in pkg.bin) {
79+
await fs.unlink(path.join(config.modulesFolder, "node_modules", ".bin", binName));
80+
}
7881

7982
// remove entire package
8083
let locs = [];
81-
if (range) {
82-
// add all transitive dependencies locations
83-
addSub(`${name}@${range}`);
8484

85-
function addSub(pattern) {
86-
let pkg = install.resolver.getResolvedPattern(pattern);
87-
if (!pkg) return; // TODO could possibly throw an error?
85+
// add all transitive dependencies locations
86+
addSub(`${name}@${range}`);
87+
88+
function addSub(pattern) {
89+
let pkg = install.resolver.getResolvedPattern(pattern);
90+
if (!pkg) return; // TODO could possibly throw an error?
8891

89-
locs.push(config.generateHardModulePath(pkg.reference));
92+
locs.push(config.generateHardModulePath(pkg.reference));
9093

91-
for (let key in pkg.dependencies) {
92-
addSub(`${key}@${pkg.dependencies[key]}`);
93-
}
94+
for (let key in pkg.dependencies) {
95+
addSub(`${key}@${pkg.dependencies[key]}`);
9496
}
95-
} else {
96-
// doesn't look like this was in package.json so we don't have a pattern to seed
97-
// the search
98-
locs.push(loc);
9997
}
10098

10199
for (let loc of locs) {

0 commit comments

Comments
 (0)