Skip to content

Commit

Permalink
delete peerDependencies
Browse files Browse the repository at this point in the history
  • Loading branch information
beyondkmp committed Feb 5, 2025
1 parent 67061ac commit 727e028
Show file tree
Hide file tree
Showing 6 changed files with 50 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ export abstract class NodeModulesCollector {
return node
}

private resolvePath(filePath: string) {
protected resolvePath(filePath: string) {
try {
const stats = fs.lstatSync(filePath)
if (stats.isSymbolicLink()) {
Expand Down Expand Up @@ -75,6 +75,7 @@ export abstract class NodeModulesCollector {

abstract getCommand(): string
abstract getArgs(): string[]
abstract deletePeerDeps(tree: DependencyTree): void

protected async getDependenciesTree(): Promise<DependencyTree> {
const command = this.getCommand()
Expand Down Expand Up @@ -127,6 +128,7 @@ export abstract class NodeModulesCollector {
public async getNodeModules(): Promise<NodeModuleInfo[]> {
const tree = await this.getDependenciesTree()
const realTree = this.getTreeFromWorkspaces(tree)
this.deletePeerDeps(realTree)
const dependencyGraph = this.convertToDependencyGraph(realTree)
const hoisterResult = hoist(this.transToHoisterTree(dependencyGraph), { check: true })
this._getNodeModules(hoisterResult.dependencies, this.nodeModules)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { NodeModulesCollector } from "./nodeModulesCollector"
import { DependencyTree } from "./types"

export class NpmNodeModulesCollector extends NodeModulesCollector {
constructor(rootDir: string) {
Expand All @@ -10,6 +11,17 @@ export class NpmNodeModulesCollector extends NodeModulesCollector {
}

getArgs(): string[] {
return ["list", "--include", "prod", "--include", "optional", "--json", "--long", "--silent"]
return ["list", "-a", "--include", "prod", "--include", "optional", "--json", "--long", "--silent"]
}

deletePeerDeps(tree: DependencyTree) {
const dependencies = tree.dependencies || {}
const peerDependencies = tree.peerDependencies || {}
for (const [key, value] of Object.entries(dependencies)) {
if (peerDependencies[key]) {
delete dependencies[key]
}
this.deletePeerDeps(value)
}
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
import { NodeModulesCollector } from "./nodeModulesCollector"
import { DependencyTree } from "./types"
import * as path from "path"

export class PnpmNodeModulesCollector extends NodeModulesCollector {
constructor(rootDir: string) {
Expand All @@ -12,4 +14,17 @@ export class PnpmNodeModulesCollector extends NodeModulesCollector {
getArgs(): string[] {
return ["list", "--prod", "--json", "--long", "--depth", "Infinity"]
}

deletePeerDeps(tree: DependencyTree) {
const dependencies = tree.dependencies || {}
for (const [key, value] of Object.entries(dependencies)) {
const p = path.normalize(this.resolvePath(value.path))
const pJson: DependencyTree = require(path.join(p, "package.json"))
const peerDependencies = pJson.peerDependencies || {}
if (peerDependencies[key]) {
delete dependencies[key]
}
this.deletePeerDeps(value)
}
}
}
6 changes: 6 additions & 0 deletions packages/app-builder-lib/src/node-module-collector/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,12 @@ export interface DependencyTree {
dependencies: {
[packageName: string]: DependencyTree
}
optionalDependencies?: {
[packageName: string]: DependencyTree
}
peerDependencies?: {
[packageName: string]: DependencyTree
}
}

export interface DependencyGraph {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { NodeModulesCollector } from "./nodeModulesCollector"
import { DependencyTree } from "./types"

export class YarnNodeModulesCollector extends NodeModulesCollector {
constructor(rootDir: string) {
Expand All @@ -10,6 +11,16 @@ export class YarnNodeModulesCollector extends NodeModulesCollector {
}

getArgs(): string[] {
return ["list", "--include", "prod", "--include", "optional", "--json", "--long", "--silent"]
return ["list", "-a", "--include", "prod", "--include", "optional", "--json", "--long", "--silent"]
}
deletePeerDeps(tree: DependencyTree) {
const dependencies = tree.dependencies || {}
const peerDependencies = tree.peerDependencies || {}
for (const [key, value] of Object.entries(dependencies)) {
if (peerDependencies[key]) {
delete dependencies[key]
}
this.deletePeerDeps(value)
}
}
}
2 changes: 1 addition & 1 deletion test/src/HoistedNodeModuleTest.ts
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,7 @@ test.only("yarn electron-clear-data", () =>
}),
outputFile(path.join(projectDir, "yarn.lock"), ""),
])
}
},
}
))

Expand Down

0 comments on commit 727e028

Please sign in to comment.