Skip to content

Commit 5d8580e

Browse files
committed
fix(add): when signatures are compared
- never compare sigs when --pure is used - avoid re-installing ".yalc/{name}" when sigs match - improved logic for updating package dependencies
1 parent b2a4f1e commit 5d8580e

File tree

1 file changed

+40
-41
lines changed

1 file changed

+40
-41
lines changed

src/add.ts

Lines changed: 40 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -99,23 +99,12 @@ export const addPackages = async (
9999
return null
100100
}
101101

102-
const signature = readSignatureFile(storedPackageDir)
103-
const destYalcCopyDir = join(workingDir, values.yalcPackagesFolder, name)
104-
if (signature === readSignatureFile(destYalcCopyDir)) {
105-
console.log(
106-
`"${packageName}" already exists in the local ".yalc" directory`
107-
)
108-
return null
109-
}
110-
111102
const pkg = readPackageManifest(storedPackageDir)
112103
if (!pkg) {
113104
return null
114105
}
115106

116-
emptyDirExcludeNodeModules(destYalcCopyDir)
117-
fs.copySync(storedPackageDir, destYalcCopyDir)
118-
107+
const signature = readSignatureFile(storedPackageDir)
119108
let replacedVersion = ''
120109
if (doPure) {
121110
if (localPkg.workspaces) {
@@ -134,52 +123,62 @@ export const addPackages = async (
134123
)
135124
}
136125
if (!doPure) {
137-
const destModulesDir = join(workingDir, 'node_modules', name)
138-
139-
fs.removeSync(destModulesDir)
140-
ensureSymlinkSync(destYalcCopyDir, destModulesDir, 'junction')
141-
142126
if (!options.link) {
143127
const protocol = options.linkDep ? 'link:' : 'file:'
144128
const localAddress =
145129
protocol + values.yalcPackagesFolder + '/' + pkg.name
146130

147131
const dependencies = localPkg.dependencies || {}
148132
const devDependencies = localPkg.devDependencies || {}
149-
let whereToAdd = options.dev ? devDependencies : dependencies
150133

151-
if (options.dev) {
152-
if (dependencies[pkg.name]) {
153-
replacedVersion = dependencies[pkg.name]
154-
delete dependencies[pkg.name]
155-
}
156-
} else {
157-
if (!dependencies[pkg.name]) {
158-
if (devDependencies[pkg.name]) {
159-
whereToAdd = devDependencies
160-
}
161-
}
162-
}
134+
const whereToRemove = devDependencies[pkg.name]
135+
? devDependencies
136+
: dependencies
163137

164-
if (whereToAdd[pkg.name] !== localAddress) {
165-
replacedVersion = replacedVersion || whereToAdd[pkg.name]
166-
whereToAdd[pkg.name] = localAddress
167-
localPkg.dependencies =
168-
whereToAdd === dependencies ? dependencies : localPkg.dependencies
169-
localPkg.devDependencies =
170-
whereToAdd === devDependencies
138+
replacedVersion = whereToRemove[pkg.name] || ''
139+
if (replacedVersion !== localAddress) {
140+
const whereToAdd =
141+
options.dev || whereToRemove === devDependencies
171142
? devDependencies
172-
: localPkg.devDependencies
143+
: dependencies
144+
173145
localPkgUpdated = true
146+
whereToAdd[pkg.name] = localAddress
147+
if (whereToAdd !== whereToRemove) {
148+
delete whereToRemove[pkg.name]
149+
}
150+
} else {
151+
replacedVersion = ''
174152
}
175-
replacedVersion =
176-
replacedVersion == localAddress ? '' : replacedVersion
177153
}
154+
155+
const destYalcCopyDir = join(
156+
workingDir,
157+
values.yalcPackagesFolder,
158+
name
159+
)
160+
161+
if (signature === readSignatureFile(destYalcCopyDir)) {
162+
console.log(
163+
`"${packageName}" already exists in the local ".yalc" directory`
164+
)
165+
return null
166+
}
167+
168+
// Replace the local ".yalc/{name}" directory.
169+
fs.removeSync(destYalcCopyDir)
170+
fs.copySync(storedPackageDir, destYalcCopyDir)
171+
172+
// Replace the local "node_modules/{name}" symlink.
173+
const nodeModulesPath = join(workingDir, 'node_modules', name)
174+
fs.removeSync(nodeModulesPath)
175+
ensureSymlinkSync(destYalcCopyDir, nodeModulesPath, 'junction')
176+
178177
const addedAction = options.link ? 'linked' : 'added'
179178
console.log(
180179
`Package ${pkg.name}@${
181180
pkg.version
182-
} ${addedAction} ==> ${destModulesDir}.`
181+
} ${addedAction} ==> ${nodeModulesPath}.`
183182
)
184183
}
185184

0 commit comments

Comments
 (0)