diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 137beed59..3838a044e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -56,6 +56,9 @@ jobs: yarn dedupe --check - name: Install npm dependencies uses: ./.github/actions/yarn + - name: Lint lockfile + run: | + yarn lint-lockfile - name: Validate generated files if: ${{ github.event_name == 'pull_request' }} env: diff --git a/package.json b/package.json index ee6ce2fd0..6c7b87280 100644 --- a/package.json +++ b/package.json @@ -128,6 +128,7 @@ "@react-native-community/cli": "^15.0.1", "@react-native-community/template": "^0.78.0", "@rnx-kit/eslint-plugin": "^0.8.0", + "@rnx-kit/lint-lockfile": "^0.1.0", "@rnx-kit/tsconfig": "^2.0.0", "@swc-node/register": "^1.10.0", "@swc/core": "^1.11.0", @@ -208,5 +209,17 @@ "visionos": "@callstack/react-native-visionos", "windows": "react-native-windows" }, - "prettier": "./.github/prettierrc.json" + "prettier": "./.github/prettierrc.json", + "rnx-kit": { + "lint": { + "lockfile": { + "noDuplicates": { + "packages": [ + "#react-native", + "@babel/core" + ] + } + } + } + } } diff --git a/yarn.lock b/yarn.lock index 08eeb975d..438ded3bc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3676,16 +3676,16 @@ __metadata: languageName: node linkType: hard -"@rnx-kit/config@npm:^0.7.0": - version: 0.7.3 - resolution: "@rnx-kit/config@npm:0.7.3" +"@rnx-kit/config@npm:^0.7.0, @rnx-kit/config@npm:^0.7.4": + version: 0.7.4 + resolution: "@rnx-kit/config@npm:0.7.4" dependencies: "@rnx-kit/console": "npm:^2.0.0" "@rnx-kit/tools-node": "npm:^3.0.0" "@rnx-kit/tools-packages": "npm:^0.1.0" lodash.merge: "npm:^4.6.2" semver: "npm:^7.0.0" - checksum: 10c0/0c29594647714c7467f1263ed48b371fd53ceefd6fef8231deb9f7cd08f6113d84e1b25747a89acf5d936a0d6bd420eabbc8afc890c9ccbb5fd823cb198a9812 + checksum: 10c0/f237eacf8082eb5068d88a4b8302c115014edc0131475e756e52052426421f0799caa82208e7691b2e1673b859422bd9f5f8a9a192841f0e19c16ab7de090dd5 languageName: node linkType: hard @@ -3711,6 +3711,19 @@ __metadata: languageName: node linkType: hard +"@rnx-kit/lint-lockfile@npm:^0.1.0": + version: 0.1.0 + resolution: "@rnx-kit/lint-lockfile@npm:0.1.0" + dependencies: + "@rnx-kit/config": "npm:^0.7.4" + "@rnx-kit/tools-workspaces": "npm:^0.2.3" + js-yaml: "npm:^4.1.0" + bin: + lint-lockfile: lib/cli.js + checksum: 10c0/534491cdf8c058a63862fd5e38209eee5a5ed8fe725a5e6d085076ed1b8a1b4f8ed08578b9174044c53f1ddebb197624d0b767c744b7565f36b6d3cfb13b0668 + languageName: node + linkType: hard + "@rnx-kit/metro-config@npm:^2.1.0": version: 2.1.0 resolution: "@rnx-kit/metro-config@npm:2.1.0" @@ -3912,16 +3925,16 @@ __metadata: languageName: node linkType: hard -"@rnx-kit/tools-workspaces@npm:^0.2.0, @rnx-kit/tools-workspaces@npm:^0.2.1": - version: 0.2.2 - resolution: "@rnx-kit/tools-workspaces@npm:0.2.2" +"@rnx-kit/tools-workspaces@npm:^0.2.0, @rnx-kit/tools-workspaces@npm:^0.2.1, @rnx-kit/tools-workspaces@npm:^0.2.3": + version: 0.2.3 + resolution: "@rnx-kit/tools-workspaces@npm:0.2.3" dependencies: fast-glob: "npm:^3.2.7" find-up: "npm:^5.0.0" micromatch: "npm:^4.0.0" read-yaml-file: "npm:^2.1.0" strip-json-comments: "npm:^3.1.1" - checksum: 10c0/3a0f258d8be28818c7b6c7b5c490c7aa20a1181e7499b1ccce23e3043f41a767e9f1a5eefe5f696de11eaf3ad84777587059c78169694e85aeda9f97882e5ae6 + checksum: 10c0/b9528f560092c8ba8eeafb818cef2363ba99ffd7b3f0e3738cfe0316b35211ab7b6aa08d9eb3ef555c02b6048c591adafdca2934e674066256c06860cb1cf668 languageName: node linkType: hard @@ -12128,6 +12141,7 @@ __metadata: "@react-native-community/cli": "npm:^15.0.1" "@react-native-community/template": "npm:^0.78.0" "@rnx-kit/eslint-plugin": "npm:^0.8.0" + "@rnx-kit/lint-lockfile": "npm:^0.1.0" "@rnx-kit/react-native-host": "npm:^0.5.9" "@rnx-kit/tools-react-native": "npm:^2.1.0" "@rnx-kit/tsconfig": "npm:^2.0.0"