kibana/packages/kbn-yarn-lock-validator
Spencer d6be4a4b06
Implement package linter (#148496)
This PR implements a linter like the TS Project linter, except for
packages in the repo. It does this by extracting the reusable bits from
the TS Project linter and reusing them for the project linter. The only
rule that exists for packages right now is that the "name" in the
package.json file matches the "id" in Kibana.jsonc. The goal is to use a
rule to migrate kibana.json files on the future.

Additionally, a new rule for validating the indentation of tsconfig.json
files was added.

Validating and fixing violations is what has triggered review by so many
teams, but we plan to treat those review requests as notifications of
the changes and not as blockers for merging.

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
2023-01-09 16:49:29 -07:00
..
src Implement package linter (#148496) 2023-01-09 16:49:29 -07:00
index.ts chore(NA): remove src folder requirement from packages (part 2) (#138476) 2022-08-30 15:57:35 +01:00
jest.config.js [kbn/pm] rewrite to avoid needing a build process (#136207) 2022-07-18 08:46:13 -07:00
kibana.jsonc Transpile packages on demand, validate all TS projects (#146212) 2022-12-22 19:00:29 -06:00
package.json Transpile packages on demand, validate all TS projects (#146212) 2022-12-22 19:00:29 -06:00
README.mdx [kbn/pm] rewrite to avoid needing a build process (#136207) 2022-07-18 08:46:13 -07:00
tsconfig.json Implement package linter (#148496) 2023-01-09 16:49:29 -07:00

---
id: kibDevDocsOpsKbnYarnLockValidator
slug: /kibana-dev-docs/ops/kbn-yarn-lock-validator
title: "@kbn/yarn-lock-validator"
description: 'A tool for validating specific conditions for our dependency chain'
date: 2022-07-14
tags: ['kibana', 'dev', 'contributor', 'operations', 'packages', 'scripts', 'yarn']
---

`@kbn/yarn-lock-validator` provides yarn.lock validation logic for the Kibana project. It is loaded up by <DocLink id="kibDevDocsOpsKbnPm" /> after bootstrap and validates that we haven't accidentally re-introduced specific dependencies or version-combination scenarios detailed below:

## validation scenarios

 - Only a single version of lodash@4 is installed
 - No lodash@3 versions installed
 - None of the bazel packages in `"dependencies"`, and none of the transient dependencies of those packages, are marked as `"devOnly": true`