Skip to content

Commit

Permalink
Merge pull request #306 from ghiscoding/bugfix/yarn-lock-v2
Browse files Browse the repository at this point in the history
fix(version): properly update dependencies npm lockfile v2
  • Loading branch information
ghiscoding committed Aug 10, 2022
2 parents 5927f80 + 0abfa85 commit bc374c5
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 3 deletions.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Expand Up @@ -2,6 +2,10 @@
"name": "package-1",
"version": "1.0.0",
"dependencies": {
"tiny-tarball": "^1.0.0"
"tiny-tarball": "^1.0.0",
"package-2": "^1.0.0"
},
"devDependencies": {
"package-3": "2.0.0"
}
}
Expand Up @@ -44,14 +44,18 @@ describe('npm classic lock file', () => {
const [pkg] = await Project.getPackages(cwd);

pkg.version = '2.0.0';
pkg.dependencies['package-1'] = '^2.0.0';
pkg.devDependencies['package-2'] = '3.0.0';

const returnedLockfilePath = await updateClassicLockfileVersion(pkg as unknown as Package);

expect(returnedLockfilePath).toBe(path.join(pkg.location, 'package-lock.json'));
expect(Array.from((loadJsonFile as any).registry.keys())).toStrictEqual(['/packages/package-1']);
const updatedLockfile = fs.readJSONSync(returnedLockfilePath as string);
expect(updatedLockfile).toHaveProperty('version', '2.0.0');
expect(updatedLockfile).toHaveProperty(['packages', '', 'version'], '2.0.0');
expect(updatedLockfile).toHaveProperty(['packages', '', 'dependencies', 'package-1'], '^2.0.0');
expect(updatedLockfile).toHaveProperty(['packages', '', 'dependencies', 'tiny-tarball'], '^1.0.0');
expect(updatedLockfile).toHaveProperty(['packages', '', 'devDependencies', 'package-2'], '3.0.0');
});

test('updateClassicLockfileVersion without sibling lockfile', async () => {
Expand Down
6 changes: 6 additions & 0 deletions packages/version/src/lib/update-lockfile-version.ts
Expand Up @@ -45,6 +45,12 @@ export async function updateClassicLockfileVersion(pkg: Package): Promise<string
// update version for a npm lockfile v2 format
if (pkgLockFileObj.packages?.['']) {
pkgLockFileObj.packages[''].version = pkg.version;
if (pkgLockFileObj.packages[''].dependencies) {
pkgLockFileObj.packages[''].dependencies = pkg.dependencies;
}
if (pkgLockFileObj.packages[''].devDependencies) {
pkgLockFileObj.packages[''].devDependencies = pkg.devDependencies;
}
}

await writeJsonFile(lockFilePath, pkgLockFileObj, {
Expand Down

0 comments on commit bc374c5

Please sign in to comment.