diff --git a/__fixtures__/lockfile-leaf-v2/lerna.json b/__fixtures__/lockfile-leaf-v2/lerna.json new file mode 100644 index 0000000000..1587a66968 --- /dev/null +++ b/__fixtures__/lockfile-leaf-v2/lerna.json @@ -0,0 +1,3 @@ +{ + "version": "1.0.0" +} diff --git a/__fixtures__/lockfile-leaf-v2/package.json b/__fixtures__/lockfile-leaf-v2/package.json new file mode 100644 index 0000000000..5fa36b4fcd --- /dev/null +++ b/__fixtures__/lockfile-leaf-v2/package.json @@ -0,0 +1,5 @@ +{ + "name": "leaf-lockfile", + "version": "0.0.0-lerna", + "private": true +} diff --git a/__fixtures__/lockfile-leaf-v2/packages/package-1/package-lock.json b/__fixtures__/lockfile-leaf-v2/packages/package-1/package-lock.json new file mode 100644 index 0000000000..c676a3a8c3 --- /dev/null +++ b/__fixtures__/lockfile-leaf-v2/packages/package-1/package-lock.json @@ -0,0 +1,27 @@ +{ + "name": "package-1", + "version": "1.0.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "package-1", + "version": "1.0.0", + "dependencies": { + "tiny-tarball": "^1.0.0" + } + }, + "node_modules/tiny-tarball": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/tiny-tarball/-/tiny-tarball-1.0.0.tgz", + "integrity": "sha1-u/EC1a5zr+LFUyleD7AiMCFvZbE=" + } + }, + "dependencies": { + "tiny-tarball": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/tiny-tarball/-/tiny-tarball-1.0.0.tgz", + "integrity": "sha1-u/EC1a5zr+LFUyleD7AiMCFvZbE=" + } + } +} diff --git a/__fixtures__/lockfile-leaf-v2/packages/package-1/package.json b/__fixtures__/lockfile-leaf-v2/packages/package-1/package.json new file mode 100644 index 0000000000..ee217c2df6 --- /dev/null +++ b/__fixtures__/lockfile-leaf-v2/packages/package-1/package.json @@ -0,0 +1,7 @@ +{ + "name": "package-1", + "version": "1.0.0", + "dependencies": { + "tiny-tarball": "^1.0.0" + } +} diff --git a/commands/version/__tests__/update-lockfile-version.test.js b/commands/version/__tests__/update-lockfile-version.test.js index b0af8de818..1cf7e473e5 100644 --- a/commands/version/__tests__/update-lockfile-version.test.js +++ b/commands/version/__tests__/update-lockfile-version.test.js @@ -12,7 +12,7 @@ const initFixture = require("@lerna-test/init-fixture")(__dirname); const { updateLockfileVersion } = require("../lib/update-lockfile-version"); -test("updateLockfileVersion", async () => { +test("updateLockfileVersion with lockfile v1", async () => { const cwd = await initFixture("lockfile-leaf"); const [pkg] = await getPackages(cwd); @@ -25,6 +25,21 @@ test("updateLockfileVersion", async () => { expect(fs.readJSONSync(returnedLockfilePath)).toHaveProperty("version", "2.0.0"); }); +test("updateLockfileVersion with lockfile v2", async () => { + const cwd = await initFixture("lockfile-leaf-v2"); + const [pkg] = await getPackages(cwd); + + pkg.version = "2.0.0"; + + const returnedLockfilePath = await updateLockfileVersion(pkg); + + expect(returnedLockfilePath).toBe(path.join(pkg.location, "package-lock.json")); + expect(Array.from(loadJsonFile.registry.keys())).toStrictEqual(["/packages/package-1"]); + const updatedLockfile = fs.readJSONSync(returnedLockfilePath); + expect(updatedLockfile).toHaveProperty("version", "2.0.0"); + expect(updatedLockfile).toHaveProperty(["packages", "", "version"], "2.0.0"); +}); + test("updateLockfileVersion without sibling lockfile", async () => { const cwd = await initFixture("lifecycle", false); const [pkg] = await getPackages(cwd); diff --git a/commands/version/lib/update-lockfile-version.js b/commands/version/lib/update-lockfile-version.js index 1975c11863..09a7427e50 100644 --- a/commands/version/lib/update-lockfile-version.js +++ b/commands/version/lib/update-lockfile-version.js @@ -16,6 +16,10 @@ function updateLockfileVersion(pkg) { if (obj) { obj.version = pkg.version; + if (obj.packages && obj.packages[""]) { + obj.packages[""].version = pkg.version; + } + return writeJsonFile(lockfilePath, obj, { detectIndent: true, indent: 2,