Skip to content

Commit b3218e7

Browse files
merceyzeps1lon
authored andcommitted
[core] Deduplicate packages (mui#16608)
* [core] Deduplicate packages * Deduplicate * Move task to checkout job * Remove postinstall check, remove function wrapper
1 parent 83521f7 commit b3218e7

File tree

4 files changed

+63
-2
lines changed

4 files changed

+63
-2
lines changed

.circleci/config.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,9 @@ jobs:
4141
- run:
4242
name: Should not have any git not staged
4343
command: git diff --exit-code
44+
- run:
45+
name: Check for duplicated packages
46+
command: yarn deduplicate
4447
- save_cache:
4548
key: v2-yarn-sha-{{ checksum "yarn.lock" }}
4649
paths:

package.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
"version": "4.2.1",
33
"private": true,
44
"scripts": {
5+
"deduplicate": "node scripts/deduplicate.js",
56
"argos": "argos upload test/regressions/screenshots/chrome --token $ARGOS_TOKEN",
67
"docs:api": "rimraf ./pages/api && cross-env BABEL_ENV=test babel-node ./docs/scripts/buildApi.js ./packages/material-ui/src ./pages/api && cross-env BABEL_ENV=test babel-node ./docs/scripts/buildApi.js ./packages/material-ui-lab/src ./pages/api",
78
"docs:build": "rimraf .next && cross-env NODE_ENV=production BABEL_ENV=docs-production next build",
@@ -201,7 +202,8 @@
201202
"webfontloader": "^1.6.28",
202203
"webpack": "^4.28.4",
203204
"webpack-bundle-analyzer": "^3.0.0",
204-
"webpack-cli": "^3.2.3"
205+
"webpack-cli": "^3.2.3",
206+
"yarn-deduplicate": "^1.1.1"
205207
},
206208
"resolutions": {
207209
"**/hoist-non-react-statics": "^3.2.1"

scripts/deduplicate.js

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
/* eslint-disable no-console */
2+
3+
const { spawn } = require('child_process');
4+
const path = require('path');
5+
const fs = require('fs');
6+
const deduplicate = require('yarn-deduplicate');
7+
8+
const lockFile = path.resolve(__dirname, '../yarn.lock');
9+
const yarnlock = fs.readFileSync(lockFile, 'utf8');
10+
11+
const duplicates = deduplicate.listDuplicates(yarnlock);
12+
if (duplicates.length === 0) {
13+
console.log('No duplicated packages found');
14+
process.exit(0);
15+
}
16+
17+
console.log(
18+
`${duplicates.length} duplicated package(s) found\n${duplicates.map(x => ` ${x}`).join('\n')}`,
19+
);
20+
21+
if (process.env.CI) {
22+
console.error(
23+
[
24+
`Error: There are currently ${duplicates.length} duplicated package(s).`,
25+
`To deduplicate run "yarn deduplicate"`,
26+
].join('\n'),
27+
);
28+
process.exit(1);
29+
}
30+
31+
console.log('Deduplicating package(s)');
32+
fs.writeFileSync(lockFile, deduplicate.fixDuplicates(yarnlock));
33+
34+
const yarn = spawn('yarn', {
35+
shell: true,
36+
stdio: 'inherit',
37+
cwd: path.resolve(__dirname, '..'),
38+
});
39+
40+
yarn.on('close', code => {
41+
process.exit(code);
42+
});

yarn.lock

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2652,6 +2652,11 @@
26522652
resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d"
26532653
integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==
26542654

2655+
"@yarnpkg/lockfile@^1.1.0":
2656+
version "1.1.0"
2657+
resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31"
2658+
integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==
2659+
26552660
"@zeit/next-typescript@^1.1.1":
26562661
version "1.1.1"
26572662
resolved "https://registry.yarnpkg.com/@zeit/next-typescript/-/next-typescript-1.1.1.tgz#0b0ddfbb13ca04cde52ac2718473f1b9c40ba0ee"
@@ -4325,7 +4330,7 @@ [email protected], commander@~2.9.0:
43254330
dependencies:
43264331
graceful-readlink ">= 1.0.0"
43274332

4328-
commander@^2.11.0, commander@^2.12.1, commander@^2.18.0, commander@^2.19.0, commander@^2.8.1, commander@^2.9.0, commander@~2.20.0:
4333+
commander@^2.10.0, commander@^2.11.0, commander@^2.12.1, commander@^2.18.0, commander@^2.19.0, commander@^2.8.1, commander@^2.9.0, commander@~2.20.0:
43294334
version "2.20.0"
43304335
resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422"
43314336
integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==
@@ -14757,6 +14762,15 @@ yargs@^12.0.0, yargs@^12.0.1, yargs@^12.0.5:
1475714762
y18n "^3.2.1 || ^4.0.0"
1475814763
yargs-parser "^11.1.1"
1475914764

14765+
yarn-deduplicate@^1.1.1:
14766+
version "1.1.1"
14767+
resolved "https://registry.yarnpkg.com/yarn-deduplicate/-/yarn-deduplicate-1.1.1.tgz#19b4a87654b66f55bf3a4bd6b153b4e4ab1b6e6d"
14768+
integrity sha512-2FDJ1dFmtvqhRmfja89ohYzpaheCYg7BFBSyaUq+kxK0y61C9oHv1XaQovCWGJtP2WU8PksQOgzMVV7oQOobzw==
14769+
dependencies:
14770+
"@yarnpkg/lockfile" "^1.1.0"
14771+
commander "^2.10.0"
14772+
semver "^5.3.0"
14773+
1476014774
1476114775
version "2.4.1"
1476214776
resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.4.1.tgz#9528f442dab1b2284e58b4379bb194e22e0c4005"

0 commit comments

Comments
 (0)