From 92d5a7f806b9305000ccb17de21b73d78d33e3e1 Mon Sep 17 00:00:00 2001 From: Yao Ding Date: Sun, 15 Mar 2020 23:04:37 -0400 Subject: [PATCH 1/8] fix: remove global bin when unlink --- packages/supi/src/install/extendInstallOptions.ts | 1 + packages/supi/src/install/index.ts | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/supi/src/install/extendInstallOptions.ts b/packages/supi/src/install/extendInstallOptions.ts index a2e0c7a20f7..c99b77b9f23 100644 --- a/packages/supi/src/install/extendInstallOptions.ts +++ b/packages/supi/src/install/extendInstallOptions.ts @@ -71,6 +71,7 @@ export interface StrictInstallOptions { forceShamefullyHoist: boolean, global: boolean, + globalBin: string, } export type InstallOptions = Partial & diff --git a/packages/supi/src/install/index.ts b/packages/supi/src/install/index.ts index 8dc6b648d98..22658a32c56 100644 --- a/packages/supi/src/install/index.ts +++ b/packages/supi/src/install/index.ts @@ -36,8 +36,8 @@ import { WorkspacePackages, } from '@pnpm/resolver-base' import { - DependenciesField, DEPENDENCIES_FIELDS, + DependenciesField, DependencyManifest, ProjectManifest, Registries, @@ -304,6 +304,9 @@ export async function mutateModules ( break } case 'unlinkSome': { + if (project.manifest?.name) { + await rimraf(path.join(opts.globalBin, project.manifest?.name)) + } const packagesToInstall: string[] = [] const allDeps = getAllDependenciesFromManifest(project.manifest) for (const depName of project.dependencyNames) { From b127f9825a706a73fdb783ee39865198910d5b70 Mon Sep 17 00:00:00 2001 From: Yao Ding Date: Mon, 16 Mar 2020 08:55:26 -0400 Subject: [PATCH 2/8] fix lint --- packages/supi/src/install/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/supi/src/install/index.ts b/packages/supi/src/install/index.ts index 22658a32c56..e15ab08f225 100644 --- a/packages/supi/src/install/index.ts +++ b/packages/supi/src/install/index.ts @@ -36,8 +36,8 @@ import { WorkspacePackages, } from '@pnpm/resolver-base' import { - DEPENDENCIES_FIELDS, DependenciesField, + DEPENDENCIES_FIELDS, DependencyManifest, ProjectManifest, Registries, From 7fad4dffab3a63d5613427a59222b360701b6234 Mon Sep 17 00:00:00 2001 From: Yao Ding Date: Fri, 19 Jun 2020 11:19:26 -0400 Subject: [PATCH 3/8] remove bin --- .../src/removeDirectDependency.ts | 1 - packages/modules-cleaner/tsconfig.json | 4 +- packages/remove-bins/README.md | 23 +++++++++ packages/remove-bins/package.json | 45 +++++++++++++++++ packages/remove-bins/src/index.ts | 6 +++ packages/remove-bins/src/removeBins.ts | 50 +++++++++++++++++++ packages/remove-bins/tsconfig.json | 25 ++++++++++ 7 files changed, 151 insertions(+), 3 deletions(-) create mode 100644 packages/remove-bins/README.md create mode 100644 packages/remove-bins/package.json create mode 100644 packages/remove-bins/src/index.ts create mode 100644 packages/remove-bins/src/removeBins.ts create mode 100644 packages/remove-bins/tsconfig.json diff --git a/packages/modules-cleaner/src/removeDirectDependency.ts b/packages/modules-cleaner/src/removeDirectDependency.ts index 1d1ce8abeb5..881af90d629 100644 --- a/packages/modules-cleaner/src/removeDirectDependency.ts +++ b/packages/modules-cleaner/src/removeDirectDependency.ts @@ -1,5 +1,4 @@ import { - removalLogger, rootLogger, } from '@pnpm/core-loggers' import binify from '@pnpm/package-bins' diff --git a/packages/modules-cleaner/tsconfig.json b/packages/modules-cleaner/tsconfig.json index fbf61664081..19c08b81d13 100644 --- a/packages/modules-cleaner/tsconfig.json +++ b/packages/modules-cleaner/tsconfig.json @@ -22,10 +22,10 @@ "path": "../lockfile-utils" }, { - "path": "../package-bins" + "path": "../read-modules-dir" }, { - "path": "../read-modules-dir" + "path": "../remove-bins" }, { "path": "../read-package-json" diff --git a/packages/remove-bins/README.md b/packages/remove-bins/README.md new file mode 100644 index 00000000000..f287bced2f4 --- /dev/null +++ b/packages/remove-bins/README.md @@ -0,0 +1,23 @@ +# @pnpm/remove-bins + +> Remove bins from ./bin + +## Install + +``` +pnpm install @pnpm/remove-bins +``` + +## API + +### `prune(...args)` + +Compares the wanted lockfile with the current one and removes redundant packages from `node_modules`. + +### `removeDirectDependency(...args)` + +Removes a direct dependency from `node_modules`. + +## License + +MIT diff --git a/packages/remove-bins/package.json b/packages/remove-bins/package.json new file mode 100644 index 00000000000..72a13042a71 --- /dev/null +++ b/packages/remove-bins/package.json @@ -0,0 +1,45 @@ +{ + "name": "@pnpm/remove-bins", + "version": "1.0.0", + "description": "Remove bins from .bin", + "author": "Zoltan Kochan (https://www.kochan.io/)", + "main": "lib/index.js", + "typings": "lib/index.d.ts", + "files": [ + "lib", + "!*.map" + ], + "peerDependencies": { + "@pnpm/logger": "^3.1.0" + }, + "keywords": [], + "license": "MIT", + "engines": { + "node": ">=10" + }, + "repository": "https://github.com/pnpm/pnpm/blob/master/packages/modules-cleaner", + "homepage": "https://github.com/pnpm/pnpm/blob/master/packages/modules-cleaner#readme", + "scripts": { + "start": "pnpm run tsc -- --watch", + "test": "pnpm run compile", + "lint": "tslint -c ../../tslint.json src/**/*.ts test/**/*.ts", + "prepublishOnly": "pnpm run compile", + "compile": "rimraf lib tsconfig.tsbuildinfo && tsc --build" + }, + "dependencies": { + "@pnpm/core-loggers": "workspace:4.0.1", + "@pnpm/package-bins": "workspace:4.0.3", + "@pnpm/types": "workspace:5.0.0", + "@pnpm/utils": "workspace:0.12.4", + "@zkochan/rimraf": "1.0.0", + "is-windows": "1.0.2" + }, + "devDependencies": { + "@pnpm/logger": "3.1.0", + "@types/is-windows": "^1.0.0", + "@types/ramda": "^0.26.44" + }, + "bugs": { + "url": "https://github.com/pnpm/pnpm/issues" + } +} diff --git a/packages/remove-bins/src/index.ts b/packages/remove-bins/src/index.ts new file mode 100644 index 00000000000..2990bd73958 --- /dev/null +++ b/packages/remove-bins/src/index.ts @@ -0,0 +1,6 @@ +import { remove, removeBins } from './removeBins' + +export { + remove, + removeBins, +} diff --git a/packages/remove-bins/src/removeBins.ts b/packages/remove-bins/src/removeBins.ts new file mode 100644 index 00000000000..8efec6da100 --- /dev/null +++ b/packages/remove-bins/src/removeBins.ts @@ -0,0 +1,50 @@ +import { + removalLogger, +} from '@pnpm/core-loggers' +import binify from '@pnpm/package-bins' +import { DependencyManifest } from '@pnpm/types' +import { safeReadPackageFromDir } from '@pnpm/utils' +import rimraf = require('@zkochan/rimraf') +import isWindows = require('is-windows') +import path = require('path') + +async function removeOnWin (cmd: string) { + removalLogger.debug(cmd) + await Promise.all([ + rimraf(cmd), + rimraf(`${cmd}.ps1`), + rimraf(`${cmd}.cmd`), + ]) +} + +function removeOnNonWin (p: string) { + removalLogger.debug(p) + return rimraf(p) +} + +export const remove = isWindows() ? removeOnWin : removeOnNonWin + +export async function removeBins ( + uninstalledPkg: string, + opts: { + dryRun?: boolean, + modulesDir: string, + binsDir: string, + }, +) { + const uninstalledPkgPath = path.join(opts.modulesDir, uninstalledPkg) + const uninstalledPkgJson = await safeReadPackageFromDir(uninstalledPkgPath) as DependencyManifest + + if (!uninstalledPkgJson) return + const cmds = await binify(uninstalledPkgJson, uninstalledPkgPath) + + if (!opts.dryRun) { + await Promise.all( + cmds + .map((cmd) => path.join(opts.binsDir, cmd.name)) + .map(remove), + ) + } + + return uninstalledPkgJson +} diff --git a/packages/remove-bins/tsconfig.json b/packages/remove-bins/tsconfig.json new file mode 100644 index 00000000000..bdce9b14f0a --- /dev/null +++ b/packages/remove-bins/tsconfig.json @@ -0,0 +1,25 @@ +{ + "extends": "@pnpm/tsconfig", + "compilerOptions": { + "outDir": "lib", + "rootDir": "src" + }, + "include": [ + "src/**/*.ts", + "../../typings/**/*.d.ts" + ], + "references": [ + { + "path": "../core-loggers" + }, + { + "path": "../package-bins" + }, + { + "path": "../types" + }, + { + "path": "../utils" + } + ] +} From 75eb4fb7bfbc73b665570f7d4517ecba6f866924 Mon Sep 17 00:00:00 2001 From: Yao Ding Date: Fri, 19 Jun 2020 14:49:32 -0400 Subject: [PATCH 4/8] create new package --- packages/modules-cleaner/package.json | 5 +- .../src/removeDirectDependency.ts | 48 +------------------ packages/modules-cleaner/tsconfig.json | 5 +- packages/remove-bins/README.md | 8 +--- packages/remove-bins/package.json | 12 ++--- packages/remove-bins/src/removeBins.ts | 6 +-- packages/remove-bins/tsconfig.json | 4 +- pnpm-lock.yaml | 32 +++++++++---- 8 files changed, 41 insertions(+), 79 deletions(-) diff --git a/packages/modules-cleaner/package.json b/packages/modules-cleaner/package.json index 011eb261c93..c4f4e31c03e 100644 --- a/packages/modules-cleaner/package.json +++ b/packages/modules-cleaner/package.json @@ -31,21 +31,18 @@ "@pnpm/filter-lockfile": "workspace:4.0.3", "@pnpm/lockfile-types": "workspace:2.0.1", "@pnpm/lockfile-utils": "workspace:2.0.14", - "@pnpm/package-bins": "workspace:4.0.6", "@pnpm/pkgid-to-filename": "^3.0.0", "@pnpm/read-modules-dir": "workspace:2.0.1", - "@pnpm/read-package-json": "workspace:3.1.2", + "@pnpm/remove-bins": "workspace:1.0.0", "@pnpm/store-controller-types": "workspace:8.0.1", "@pnpm/types": "workspace:6.1.0", "@zkochan/rimraf": "1.0.0", "dependency-path": "workspace:5.0.1", - "is-windows": "1.0.2", "ramda": "0.27.0" }, "devDependencies": { "@pnpm/logger": "3.2.2", "@pnpm/modules-cleaner": "link:", - "@types/is-windows": "^1.0.0", "@types/ramda": "^0.27.6" }, "bugs": { diff --git a/packages/modules-cleaner/src/removeDirectDependency.ts b/packages/modules-cleaner/src/removeDirectDependency.ts index 881af90d629..fc8c00ae18a 100644 --- a/packages/modules-cleaner/src/removeDirectDependency.ts +++ b/packages/modules-cleaner/src/removeDirectDependency.ts @@ -1,11 +1,8 @@ import { rootLogger, } from '@pnpm/core-loggers' -import binify from '@pnpm/package-bins' -import { safeReadPackageFromDir } from '@pnpm/read-package-json' -import { DependenciesField, DependencyManifest } from '@pnpm/types' -import rimraf = require('@zkochan/rimraf') -import isWindows = require('is-windows') +import { remove, removeBins } from '@pnpm/remove-bins'; +import { DependenciesField } from '@pnpm/types' import path = require('path') export default async function removeDirectDependency ( @@ -41,44 +38,3 @@ export default async function removeDirectDependency ( }) } } - -async function removeOnWin (cmd: string) { - removalLogger.debug(cmd) - await Promise.all([ - rimraf(cmd), - rimraf(`${cmd}.ps1`), - rimraf(`${cmd}.cmd`), - ]) -} - -function removeOnNonWin (p: string) { - removalLogger.debug(p) - return rimraf(p) -} - -const remove = isWindows() ? removeOnWin : removeOnNonWin - -async function removeBins ( - uninstalledPkg: string, - opts: { - dryRun?: boolean, - modulesDir: string, - binsDir: string, - } -) { - const uninstalledPkgPath = path.join(opts.modulesDir, uninstalledPkg) - const uninstalledPkgJson = await safeReadPackageFromDir(uninstalledPkgPath) as DependencyManifest - - if (!uninstalledPkgJson) return - const cmds = await binify(uninstalledPkgJson, uninstalledPkgPath) - - if (!opts.dryRun) { - await Promise.all( - cmds - .map((cmd) => path.join(opts.binsDir, cmd.name)) - .map(remove) - ) - } - - return uninstalledPkgJson -} diff --git a/packages/modules-cleaner/tsconfig.json b/packages/modules-cleaner/tsconfig.json index 19c08b81d13..c3e34095f87 100644 --- a/packages/modules-cleaner/tsconfig.json +++ b/packages/modules-cleaner/tsconfig.json @@ -21,14 +21,11 @@ { "path": "../lockfile-utils" }, - { - "path": "../read-modules-dir" - }, { "path": "../remove-bins" }, { - "path": "../read-package-json" + "path": "../read-modules-dir" }, { "path": "../store-controller-types" diff --git a/packages/remove-bins/README.md b/packages/remove-bins/README.md index f287bced2f4..b94793e296d 100644 --- a/packages/remove-bins/README.md +++ b/packages/remove-bins/README.md @@ -10,13 +10,9 @@ pnpm install @pnpm/remove-bins ## API -### `prune(...args)` +### `remove(...args)` -Compares the wanted lockfile with the current one and removes redundant packages from `node_modules`. - -### `removeDirectDependency(...args)` - -Removes a direct dependency from `node_modules`. +### `removeBins(...args)` ## License diff --git a/packages/remove-bins/package.json b/packages/remove-bins/package.json index 72a13042a71..2f6543ff2ca 100644 --- a/packages/remove-bins/package.json +++ b/packages/remove-bins/package.json @@ -27,17 +27,17 @@ "compile": "rimraf lib tsconfig.tsbuildinfo && tsc --build" }, "dependencies": { - "@pnpm/core-loggers": "workspace:4.0.1", - "@pnpm/package-bins": "workspace:4.0.3", - "@pnpm/types": "workspace:5.0.0", - "@pnpm/utils": "workspace:0.12.4", + "@pnpm/core-loggers": "workspace:4.1.1", + "@pnpm/package-bins": "workspace:4.0.6", + "@pnpm/read-package-json": "workspace:3.1.2", + "@pnpm/types": "workspace:6.1.0", "@zkochan/rimraf": "1.0.0", "is-windows": "1.0.2" }, "devDependencies": { - "@pnpm/logger": "3.1.0", + "@pnpm/logger": "3.2.2", "@types/is-windows": "^1.0.0", - "@types/ramda": "^0.26.44" + "@types/ramda": "^0.27.6" }, "bugs": { "url": "https://github.com/pnpm/pnpm/issues" diff --git a/packages/remove-bins/src/removeBins.ts b/packages/remove-bins/src/removeBins.ts index 8efec6da100..5b326d24183 100644 --- a/packages/remove-bins/src/removeBins.ts +++ b/packages/remove-bins/src/removeBins.ts @@ -2,8 +2,8 @@ import { removalLogger, } from '@pnpm/core-loggers' import binify from '@pnpm/package-bins' +import { safeReadPackageFromDir } from '@pnpm/read-package-json' import { DependencyManifest } from '@pnpm/types' -import { safeReadPackageFromDir } from '@pnpm/utils' import rimraf = require('@zkochan/rimraf') import isWindows = require('is-windows') import path = require('path') @@ -30,7 +30,7 @@ export async function removeBins ( dryRun?: boolean, modulesDir: string, binsDir: string, - }, + } ) { const uninstalledPkgPath = path.join(opts.modulesDir, uninstalledPkg) const uninstalledPkgJson = await safeReadPackageFromDir(uninstalledPkgPath) as DependencyManifest @@ -42,7 +42,7 @@ export async function removeBins ( await Promise.all( cmds .map((cmd) => path.join(opts.binsDir, cmd.name)) - .map(remove), + .map(remove) ) } diff --git a/packages/remove-bins/tsconfig.json b/packages/remove-bins/tsconfig.json index bdce9b14f0a..63bd189f3ff 100644 --- a/packages/remove-bins/tsconfig.json +++ b/packages/remove-bins/tsconfig.json @@ -16,10 +16,10 @@ "path": "../package-bins" }, { - "path": "../types" + "path": "../read-package-json" }, { - "path": "../utils" + "path": "../types" } ] } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0af82e15665..b13af530af8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1000,20 +1000,17 @@ importers: '@pnpm/filter-lockfile': 'link:../filter-lockfile' '@pnpm/lockfile-types': 'link:../lockfile-types' '@pnpm/lockfile-utils': 'link:../lockfile-utils' - '@pnpm/package-bins': 'link:../package-bins' '@pnpm/pkgid-to-filename': 3.0.0 '@pnpm/read-modules-dir': 'link:../read-modules-dir' - '@pnpm/read-package-json': 'link:../read-package-json' + '@pnpm/remove-bins': 'link:../remove-bins' '@pnpm/store-controller-types': 'link:../store-controller-types' '@pnpm/types': 'link:../types' '@zkochan/rimraf': 1.0.0 dependency-path: 'link:../dependency-path' - is-windows: 1.0.2 ramda: 0.27.0 devDependencies: '@pnpm/logger': 3.2.2 '@pnpm/modules-cleaner': 'link:' - '@types/is-windows': 1.0.0 '@types/ramda': 0.27.6 specifiers: '@pnpm/core-loggers': 'workspace:4.1.1' @@ -1022,17 +1019,14 @@ importers: '@pnpm/lockfile-utils': 'workspace:2.0.14' '@pnpm/logger': 3.2.2 '@pnpm/modules-cleaner': 'link:' - '@pnpm/package-bins': 'workspace:4.0.6' '@pnpm/pkgid-to-filename': ^3.0.0 '@pnpm/read-modules-dir': 'workspace:2.0.1' - '@pnpm/read-package-json': 'workspace:3.1.2' + '@pnpm/remove-bins': 'workspace:1.0.0' '@pnpm/store-controller-types': 'workspace:8.0.1' '@pnpm/types': 'workspace:6.1.0' - '@types/is-windows': ^1.0.0 '@types/ramda': ^0.27.6 '@zkochan/rimraf': 1.0.0 dependency-path: 'workspace:5.0.1' - is-windows: 1.0.2 ramda: 0.27.0 packages/modules-yaml: dependencies: @@ -2388,6 +2382,28 @@ importers: '@pnpm/normalize-registries': 'workspace:1.0.2' '@pnpm/types': 'workspace:6.1.0' realpath-missing: 1.0.0 + packages/remove-bins: + dependencies: + '@pnpm/core-loggers': 'link:../core-loggers' + '@pnpm/package-bins': 'link:../package-bins' + '@pnpm/read-package-json': 'link:../read-package-json' + '@pnpm/types': 'link:../types' + '@zkochan/rimraf': 1.0.0 + is-windows: 1.0.2 + devDependencies: + '@pnpm/logger': 3.2.2 + '@types/is-windows': 1.0.0 + '@types/ramda': 0.27.6 + specifiers: + '@pnpm/core-loggers': 'workspace:4.1.1' + '@pnpm/logger': 3.2.2 + '@pnpm/package-bins': 'workspace:4.0.6' + '@pnpm/read-package-json': 'workspace:3.1.2' + '@pnpm/types': 'workspace:6.1.0' + '@types/is-windows': ^1.0.0 + '@types/ramda': ^0.27.6 + '@zkochan/rimraf': 1.0.0 + is-windows: 1.0.2 packages/resolve-dependencies: dependencies: '@pnpm/core-loggers': 'link:../core-loggers' From c3a76d7c9948baf776235f982cd131b3076a9477 Mon Sep 17 00:00:00 2001 From: Yao Ding Date: Fri, 19 Jun 2020 14:52:22 -0400 Subject: [PATCH 5/8] fix --- packages/modules-cleaner/tsconfig.json | 4 ++-- packages/remove-bins/package.json | 9 +++++---- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/packages/modules-cleaner/tsconfig.json b/packages/modules-cleaner/tsconfig.json index c3e34095f87..caf008f36c5 100644 --- a/packages/modules-cleaner/tsconfig.json +++ b/packages/modules-cleaner/tsconfig.json @@ -22,10 +22,10 @@ "path": "../lockfile-utils" }, { - "path": "../remove-bins" + "path": "../read-modules-dir" }, { - "path": "../read-modules-dir" + "path": "../remove-bins" }, { "path": "../store-controller-types" diff --git a/packages/remove-bins/package.json b/packages/remove-bins/package.json index 2f6543ff2ca..e8402b4e4ba 100644 --- a/packages/remove-bins/package.json +++ b/packages/remove-bins/package.json @@ -15,10 +15,10 @@ "keywords": [], "license": "MIT", "engines": { - "node": ">=10" + "node": ">=10.13" }, - "repository": "https://github.com/pnpm/pnpm/blob/master/packages/modules-cleaner", - "homepage": "https://github.com/pnpm/pnpm/blob/master/packages/modules-cleaner#readme", + "repository": "https://github.com/pnpm/pnpm/blob/master/packages/remove-bins", + "homepage": "https://github.com/pnpm/pnpm/blob/master/packages/remove-bins#readme", "scripts": { "start": "pnpm run tsc -- --watch", "test": "pnpm run compile", @@ -41,5 +41,6 @@ }, "bugs": { "url": "https://github.com/pnpm/pnpm/issues" - } + }, + "funding": "https://opencollective.com/pnpm" } From 29c31e64084447719470607d8b73bd30773002dc Mon Sep 17 00:00:00 2001 From: Yao Ding Date: Fri, 19 Jun 2020 15:03:57 -0400 Subject: [PATCH 6/8] use remove for bin --- packages/modules-cleaner/src/removeDirectDependency.ts | 2 +- packages/supi/package.json | 1 + packages/supi/src/install/index.ts | 3 ++- packages/supi/tsconfig.json | 3 +++ pnpm-lock.yaml | 2 ++ 5 files changed, 9 insertions(+), 2 deletions(-) diff --git a/packages/modules-cleaner/src/removeDirectDependency.ts b/packages/modules-cleaner/src/removeDirectDependency.ts index fc8c00ae18a..83888f27b1e 100644 --- a/packages/modules-cleaner/src/removeDirectDependency.ts +++ b/packages/modules-cleaner/src/removeDirectDependency.ts @@ -1,7 +1,7 @@ import { rootLogger, } from '@pnpm/core-loggers' -import { remove, removeBins } from '@pnpm/remove-bins'; +import { remove, removeBins } from '@pnpm/remove-bins' import { DependenciesField } from '@pnpm/types' import path = require('path') diff --git a/packages/supi/package.json b/packages/supi/package.json index 361c185ad64..c475020b680 100644 --- a/packages/supi/package.json +++ b/packages/supi/package.json @@ -40,6 +40,7 @@ "@pnpm/read-modules-dir": "workspace:2.0.1", "@pnpm/read-package-json": "workspace:3.1.2", "@pnpm/read-project-manifest": "workspace:1.0.8", + "@pnpm/remove-bins": "workspace:1.0.0", "@pnpm/resolve-dependencies": "workspace:16.0.1", "@pnpm/resolver-base": "workspace:7.0.2", "@pnpm/store-controller-types": "workspace:8.0.1", diff --git a/packages/supi/src/install/index.ts b/packages/supi/src/install/index.ts index e15ab08f225..b05512bfe85 100644 --- a/packages/supi/src/install/index.ts +++ b/packages/supi/src/install/index.ts @@ -27,6 +27,7 @@ import { getAllDependenciesFromManifest } from '@pnpm/manifest-utils' import { write as writeModulesYaml } from '@pnpm/modules-yaml' import readModulesDirs from '@pnpm/read-modules-dir' import { safeReadPackageFromDir as safeReadPkgFromDir } from '@pnpm/read-package-json' +import { remove } from '@pnpm/remove-bins' import resolveDependencies, { ResolvedDirectDependency, ResolvedPackage, @@ -305,7 +306,7 @@ export async function mutateModules ( } case 'unlinkSome': { if (project.manifest?.name) { - await rimraf(path.join(opts.globalBin, project.manifest?.name)) + await remove(path.join(opts.globalBin, project.manifest?.name)) } const packagesToInstall: string[] = [] const allDeps = getAllDependenciesFromManifest(project.manifest) diff --git a/packages/supi/tsconfig.json b/packages/supi/tsconfig.json index d7bd1ac9ca5..9e234b2a95c 100644 --- a/packages/supi/tsconfig.json +++ b/packages/supi/tsconfig.json @@ -78,6 +78,9 @@ { "path": "../read-project-manifest" }, + { + "path": "../remove-bins" + }, { "path": "../resolve-dependencies" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b13af530af8..20e749efcd9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -2602,6 +2602,7 @@ importers: '@pnpm/read-modules-dir': 'link:../read-modules-dir' '@pnpm/read-package-json': 'link:../read-package-json' '@pnpm/read-project-manifest': 'link:../read-project-manifest' + '@pnpm/remove-bins': 'link:../remove-bins' '@pnpm/resolve-dependencies': 'link:../resolve-dependencies' '@pnpm/resolver-base': 'link:../resolver-base' '@pnpm/store-controller-types': 'link:../store-controller-types' @@ -2705,6 +2706,7 @@ importers: '@pnpm/read-modules-dir': 'workspace:2.0.1' '@pnpm/read-package-json': 'workspace:3.1.2' '@pnpm/read-project-manifest': 'workspace:1.0.8' + '@pnpm/remove-bins': 'workspace:1.0.0' '@pnpm/resolve-dependencies': 'workspace:16.0.1' '@pnpm/resolver-base': 'workspace:7.0.2' '@pnpm/store-controller-types': 'workspace:8.0.1' From 04bcdb1cbb2d239a533e9fddf2e97267263fd750 Mon Sep 17 00:00:00 2001 From: Yao Ding Date: Fri, 19 Jun 2020 15:17:10 -0400 Subject: [PATCH 7/8] fix test --- packages/supi/src/install/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/supi/src/install/index.ts b/packages/supi/src/install/index.ts index b05512bfe85..e1e56cf9b16 100644 --- a/packages/supi/src/install/index.ts +++ b/packages/supi/src/install/index.ts @@ -305,7 +305,7 @@ export async function mutateModules ( break } case 'unlinkSome': { - if (project.manifest?.name) { + if (project.manifest?.name && opts.globalBin) { await remove(path.join(opts.globalBin, project.manifest?.name)) } const packagesToInstall: string[] = [] From 7cb461e4856d3064f324645933585b1dd3b63a66 Mon Sep 17 00:00:00 2001 From: Yao Ding Date: Fri, 19 Jun 2020 21:56:19 -0400 Subject: [PATCH 8/8] Update packages/remove-bins/package.json Co-authored-by: Zoltan Kochan --- packages/remove-bins/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/remove-bins/package.json b/packages/remove-bins/package.json index e8402b4e4ba..f8fac457fd3 100644 --- a/packages/remove-bins/package.json +++ b/packages/remove-bins/package.json @@ -1,6 +1,6 @@ { "name": "@pnpm/remove-bins", - "version": "1.0.0", + "version": "0.0.0", "description": "Remove bins from .bin", "author": "Zoltan Kochan (https://www.kochan.io/)", "main": "lib/index.js",