Do not include peerDependencies in dependency list

This commit is contained in:
Jerko Steiner 2019-10-01 11:08:28 +07:00
parent 64d9778a33
commit 46bbd477e3
2 changed files with 25 additions and 6 deletions

View File

@ -9,4 +9,4 @@
"main": "lib/index.js", "main": "lib/index.js",
"types": "lib/index.d.ts", "types": "lib/index.d.ts",
"module": "esm/index.js" "module": "esm/index.js"
} }

View File

@ -8,8 +8,9 @@ import {join} from 'path'
interface Package { interface Package {
name: string name: string
version: string version: string
dependencies: Record<string, string> peerDependencies?: Record<string, string>
devDependencies: Record<string, string> dependencies?: Record<string, string>
devDependencies?: Record<string, string>
} }
interface Dependencies { interface Dependencies {
@ -168,8 +169,8 @@ export function imports(...argv: string[]) {
.map(resolveModuleName) .map(resolveModuleName)
.reduce((obj, mod) => { .reduce((obj, mod) => {
const versionString = const versionString =
rootPackage.dependencies[mod] || (rootPackage.dependencies || {})[mod] ||
rootPackage.devDependencies[mod] (rootPackage.devDependencies || {})[mod]
const resolvedModule = resolveModule(mod, versionString) const resolvedModule = resolveModule(mod, versionString)
obj[resolvedModule.name] = resolvedModule.version obj[resolvedModule.name] = resolvedModule.version
return obj return obj
@ -182,7 +183,25 @@ export function imports(...argv: string[]) {
const imports = collectImports(pkgDir, 'tsconfig.json') const imports = collectImports(pkgDir, 'tsconfig.json')
const packageFile = join(pkgDir, 'package.json') const packageFile = join(pkgDir, 'package.json')
const targetPackage = readPackage(packageFile) const targetPackage = readPackage(packageFile)
targetPackage.dependencies = resolveDependencies(imports.dependencies) const dependencies = resolveDependencies(imports.dependencies)
if (targetPackage.peerDependencies) {
const peerDependencyNames = new Set(
Object.keys(targetPackage.peerDependencies),
)
const depsWithoutPeers = Object
.keys(dependencies)
.reduce((obj, dep) => {
if (!peerDependencyNames.has(dep)) {
obj[dep] = dependencies[dep]
} else {
error('Skipping peer dependency "%s"', dep)
}
return obj
}, {} as Record<string, string>)
targetPackage.dependencies = depsWithoutPeers
} else {
targetPackage.dependencies = dependencies
}
targetPackage.devDependencies = resolveDependencies(imports.devDependencies) targetPackage.devDependencies = resolveDependencies(imports.devDependencies)
debug('dependencies: %o', targetPackage.dependencies) debug('dependencies: %o', targetPackage.dependencies)
debug('devDependencies: %o', targetPackage.devDependencies) debug('devDependencies: %o', targetPackage.devDependencies)