feat: report dependency type when adding/removing

This commit is contained in:
zkochan
2017-07-31 23:02:48 +03:00
parent 91b66f5711
commit 4fc3c4e8a5
8 changed files with 39 additions and 12 deletions

View File

@@ -16,7 +16,7 @@
"lib/"
],
"peerDependencies": {
"pnpm-logger": "^0.5.3"
"pnpm-logger": "^0.5.4"
},
"dependencies": {
"@types/byline": "^4.2.31",
@@ -80,7 +80,7 @@
"cz-conventional-changelog": "^2.0.0",
"husky": "^0.13.2",
"npm-scripts-info": "^0.3.6",
"pnpm-logger": "^0.5.3",
"pnpm-logger": "^0.5.4",
"rimraf": "^2.5.4",
"tslint": "^5.4.2",
"typescript": "^2.4.1",

View File

@@ -60,7 +60,7 @@ devDependencies:
cz-conventional-changelog: 2.0.0
husky: 0.13.4
npm-scripts-info: 0.3.6
pnpm-logger: 0.5.3
pnpm-logger: 0.5.4
tslint: 5.5.0
typescript: 2.4.2
validate-commit-msg: 2.14.0
@@ -1595,14 +1595,14 @@ packages:
bole: 3.0.2
resolution:
integrity: sha1-6uzqWgN/BTpkxQvafto8uH9e1mE=
/pnpm-logger/0.5.3:
/pnpm-logger/0.5.4:
dependencies:
'@types/node': 8.0.17
bole: 3.0.2
ndjson: 1.5.0
dev: true
resolution:
integrity: sha512-uIDVA3VrDtzYPWuBRBR+/PVj2GqL7srSbT8V1fX7MVVHYzXLOfKrCGkY2rcWThn6lpBvq65BVebU5kFvxaEKaw==
integrity: sha512-4qWj8oOPmzkAR395KInwnQU7/0MvPIz4Oz7tJa7v+VKDsUCL1sd7AEnvwgNQ2ZJ3NaELAsnkI6bNOsP4nT6mhg==
/pnpm-shrinkwrap/3.1.0:
dependencies:
'@types/node': 7.0.39
@@ -2257,7 +2257,7 @@ specifiers:
path-exists: ^3.0.0
path-name: ^1.0.0
pnpm-install-checks: ^1.1.0
pnpm-logger: ^0.5.3
pnpm-logger: ^0.5.4
pnpm-shrinkwrap: ^3.1.0
proper-lockfile: ^2.0.0
ramda: ^0.24.1

View File

@@ -24,7 +24,13 @@ export default async function removeOrphanPkgs (
const removedTopDeps: [string, string][] = R.difference(oldPkgs, newPkgs) as [string, string][]
const rootModules = path.join(opts.prefix, 'node_modules')
await Promise.all(removedTopDeps.map(depName => removeTopDependency(depName[0], rootModules)))
await Promise.all(removedTopDeps.map(depName => {
return removeTopDependency({
name: depName[0],
dev: Boolean(opts.oldShrinkwrap.devDependencies && opts.oldShrinkwrap.devDependencies[depName[0]]),
optional: Boolean(opts.oldShrinkwrap.optionalDependencies && opts.oldShrinkwrap.optionalDependencies[depName[0]]),
}, rootModules)
}))
const oldPkgIds = R.keys(opts.oldShrinkwrap.packages).map(depPath => dp.resolve(opts.oldShrinkwrap.registry, depPath))
const newPkgIds = R.keys(opts.newShrinkwrap.packages).map(depPath => dp.resolve(opts.newShrinkwrap.registry, depPath))

View File

@@ -96,9 +96,14 @@ async function removeOuterLinks (
storePath: string,
}
) {
// These packages are not in package.json, they were just linked in not installed
for (const pkgToUninstall of pkgsToUninstall) {
if (!await safeIsInnerLink(modules, pkgToUninstall, opts)) {
await removeTopDependency(pkgToUninstall, modules)
await removeTopDependency({
name: pkgToUninstall,
dev: false,
optional: false,
}, modules)
}
}
}

View File

@@ -91,6 +91,7 @@ export default async function (
id: pkg.id,
name: pkg.name,
version: pkg.version,
dependencyType: pkg.dev && 'dev' || pkg.optional && 'optional' || 'prod',
},
})
}

View File

@@ -4,17 +4,25 @@ import binify from './binify'
import {fromDir as safeReadPkgFromDir} from './fs/safeReadPkg'
import {rootLogger} from 'pnpm-logger'
export default async function removeTopDependency (dependencyName: string, modules: string) {
export default async function removeTopDependency (
dependency: {
name: string,
dev: boolean,
optional: boolean,
},
modules: string
) {
const results = await Promise.all([
removeBins(dependencyName, modules),
rimraf(path.join(modules, dependencyName)),
removeBins(dependency.name, modules),
rimraf(path.join(modules, dependency.name)),
])
const uninstalledPkg = results[0]
rootLogger.info({
removed: {
name: dependencyName,
name: dependency.name,
version: uninstalledPkg && uninstalledPkg.version,
dependencyType: dependency.dev && 'dev' || dependency.optional && 'optional' || 'prod'
},
})
}

View File

@@ -66,6 +66,7 @@ test('no dependencies (lodash)', async (t: tape.Test) => {
added: {
name: 'lodash',
version: '4.0.0',
dependencyType: 'prod',
},
}), 'added to root')
@@ -139,6 +140,7 @@ test('update a package when installing with a dist-tag', async function (t: tape
removed: {
name: 'dep-of-pkg-with-1-dep',
version: '100.0.0',
dependencyType: 'dev',
},
}), 'reported old version removed from the root')
@@ -148,6 +150,7 @@ test('update a package when installing with a dist-tag', async function (t: tape
added: {
name: 'dep-of-pkg-with-1-dep',
version: '100.1.0',
dependencyType: 'dev',
},
}), 'reported new version added to the root')
@@ -202,6 +205,7 @@ test('idempotency (rimraf)', async (t: tape.Test) => {
added: {
name: 'rimraf',
version: '2.5.1',
dependencyType: 'prod',
},
}), 'reported that rimraf added to the root')
@@ -215,6 +219,7 @@ test('idempotency (rimraf)', async (t: tape.Test) => {
added: {
name: 'rimraf',
version: '2.5.1',
dependencyType: 'prod',
},
}), 'did not reported that rimraf was added because it was already there')
@@ -238,6 +243,7 @@ test('reporting adding root package', async (t: tape.Test) => {
added: {
name: 'flatten',
version: '1.0.2',
dependencyType: 'prod',
},
}), 'reported that flatten added to the root')
})

View File

@@ -42,6 +42,7 @@ test('uninstall package with no dependencies', async (t: tape.Test) => {
removed: {
name: 'is-negative',
version: '2.1.0',
dependencyType: 'prod',
},
}), 'removing root dependency reported')