Skip to content

Commit

Permalink
[ci] Add node scripts/yarn_deduplicate check (#169165)
Browse files Browse the repository at this point in the history
- Adds an entrypoint, `node scripts/yarn_deduplicate` for fixing
duplicated packages via npm package `yarn-deduplicate`
- Fixes existing duplicated packages
- Adds a CI check verifying no duplicated packages have been added.  

There are currently two exclusions - all types packages which causes
other checks to break, and axe-core, which does not follow semver.

Closes #125712
  • Loading branch information
jbudz committed Oct 19, 2023
1 parent 0564a6b commit b95fcf0
Show file tree
Hide file tree
Showing 6 changed files with 131 additions and 495 deletions.
1 change: 1 addition & 0 deletions .buildkite/scripts/steps/checks.sh
Original file line number Diff line number Diff line change
Expand Up @@ -23,3 +23,4 @@ export DISABLE_BOOTSTRAP_VALIDATION=false
.buildkite/scripts/steps/checks/ftr_configs.sh
.buildkite/scripts/steps/checks/saved_objects_compat_changes.sh
.buildkite/scripts/steps/code_generation/security_solution_codegen.sh
.buildkite/scripts/steps/checks/yarn_deduplicate.sh
10 changes: 10 additions & 0 deletions .buildkite/scripts/steps/checks/yarn_deduplicate.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
#!/usr/bin/env bash

set -euo pipefail

source .buildkite/scripts/common/util.sh

echo "--- Check yarn.lock for duplicated modules"
node scripts/yarn_deduplicate

check_for_changed_files 'node scripts/yarn_deduplicate && yarn kbn bootstrap' false
3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -1617,6 +1617,7 @@
"webpack-sources": "^1.4.1",
"xml-crypto": "^3.0.1",
"xmlbuilder": "13.0.2",
"yargs": "^15.4.1"
"yargs": "^15.4.1",
"yarn-deduplicate": "^6.0.2"
}
}
10 changes: 10 additions & 0 deletions scripts/yarn_deduplicate.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
* 2.0 and the Server Side Public License, v 1; you may not use this file except
* in compliance with, at your election, the Elastic License 2.0 or the Server
* Side Public License, v 1.
*/

require('../src/setup_node_env');
require('../src/dev/yarn_deduplicate');
22 changes: 22 additions & 0 deletions src/dev/yarn_deduplicate/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
* 2.0 and the Server Side Public License, v 1; you may not use this file except
* in compliance with, at your election, the Elastic License 2.0 or the Server
* Side Public License, v 1.
*/

import { resolve } from 'path';
import { writeFileSync, readFileSync } from 'fs';
import { fixDuplicates } from 'yarn-deduplicate';
import { REPO_ROOT } from '@kbn/repo-info';

const yarnLockFile = resolve(REPO_ROOT, 'yarn.lock');
const yarnLock = readFileSync(yarnLockFile, 'utf-8');
const output = fixDuplicates(yarnLock, {
useMostCommon: false,
excludeScopes: ['@types'],
excludePackages: ['axe-core', '@babel/types'],
});

writeFileSync(yarnLockFile, output);
Loading

0 comments on commit b95fcf0

Please sign in to comment.