Skip to content

Commit

Permalink
chore: upgrade to yarn 3 (#6162)
Browse files Browse the repository at this point in the history
* chore: update repo to yarn 3

* chore: align jest versions with root

* chore: align more jest package versions
  • Loading branch information
JamesHenry committed Aug 20, 2023
1 parent b52658f commit 2e1cfd5
Show file tree
Hide file tree
Showing 31 changed files with 22,573 additions and 15,809 deletions.
41 changes: 30 additions & 11 deletions .github/actions/prepare-install/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,25 +36,44 @@ runs:
node-version: ${{ inputs.node-version }}
registry-url: ${{ inputs.registry-url }}

- name: Get yarn cache directory path
# Yarn 3 caching strategy which follows taken from https://gist.github.com/belgattitude/042f9caf10d029badbde6cf9d43e400a

- name: Expose yarn config as "$GITHUB_OUTPUT"
id: yarn-config
shell: bash
id: yarn-cache-dir-path
run: echo "yarn_cache_dir=$(yarn cache dir)" >> $GITHUB_ENV
run: |
echo "CACHE_FOLDER=$(yarn config get cacheFolder)" >> $GITHUB_OUTPUT
- uses: actions/cache@v3
id: yarn-cache
# Yarn rotates the downloaded cache archives, @see https://github.com/actions/setup-node/issues/325
# Yarn cache is also reusable between arch and os.
- name: Restore yarn cache
uses: actions/cache@v3
id: yarn-download-cache
with:
path: |
${{ env.yarn_cache_dir }}
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
path: ${{ steps.yarn-config.outputs.CACHE_FOLDER }}
key: yarn-download-cache-${{ hashFiles('yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-
yarn-download-cache-
# Invalidated on yarn.lock changes
- name: Restore yarn install state
id: yarn-install-state-cache
uses: actions/cache@v3
with:
path: .yarn/ci-cache/
key: ${{ runner.os }}-yarn-install-state-cache-${{ hashFiles('yarn.lock', '.yarnrc.yml') }}

# if the cache was hit - this will run in <1s
- name: Install dependencies
shell: bash
working-directory: ${{ inputs.working-directory }}
run: |
yarn --ignore-engines --frozen-lockfile --ignore-scripts
yarn install --immutable --inline-builds
yarn check-clean-workspace-after-install
yarn patch-package
env:
# CI optimizations. Overrides yarnrc.yml options (or their defaults) in the CI action.
YARN_ENABLE_GLOBAL_CACHE: 'false' # Use local cache folder to keep downloaded archives
YARN_NM_MODE: 'hardlinks-local' # Hardlinks-(local|global) reduces io / node_modules size
YARN_INSTALL_STATE_PATH: .yarn/ci-cache/install-state.gz # Very small speedup when lock does not change
# Other environment variables
HUSKY: '0' # By default do not run HUSKY install
7 changes: 5 additions & 2 deletions .github/workflows/nx-migrate.yml
Original file line number Diff line number Diff line change
Expand Up @@ -55,12 +55,12 @@ jobs:
# Revert renovate's changes to package.json and yarn.lock so that it is a clean migrate from the status quo
git checkout HEAD~1 -- package.json yarn.lock
yarn --ignore-scripts
yarn
npx nx migrate @nx/workspace@$NX_VERSION
# Sometimes Nx can require config formatting changes after a migrate command
yarn --ignore-scripts
yarn
npx nx format
# migrations.json may or may not exist after running nx migrate
Expand All @@ -72,6 +72,9 @@ jobs:
rm migrations.json
fi
# Run the special nx repair command to ensure config matches latest and greatest
npx nx repair
# Ensure all the changed files are formatted appropriately
yarn format
Expand Down
873 changes: 873 additions & 0 deletions .yarn/releases/yarn-3.4.1.cjs

Large diffs are not rendered by default.

2 changes: 2 additions & 0 deletions .yarnrc.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
yarnPath: .yarn/releases/yarn-3.4.1.cjs
nodeLinker: node-modules
4 changes: 3 additions & 1 deletion docs/contributing/Local_Development.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,16 @@ Thank you for your interest in developing on typescript-eslint! ❤️‍🔥
## Setup

After [forking the repo from GitHub](https://help.github.com/articles/fork-a-repo) and [installing Yarn classic](https://classic.yarnpkg.com):
After [forking the repo from GitHub](https://help.github.com/articles/fork-a-repo) and [installing Yarn](https://yarnpkg.com):

```shell
git clone https://github.com/<your-name-here>/typescript-eslint
cd typescript-eslint
yarn
```

You can see which version of `yarn` we use by checking the `packageManager` field in the root `package.json`.

Postinstall scripts will then fully build your repository locally with (`yarn build`).
At this point, you're ready to develop! 🚀

Expand Down
4 changes: 3 additions & 1 deletion netlify.toml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,9 @@
command = "NX_VERBOSE_LOGGING=true yarn patch-package && yarn nx build website"
[build.environment]
NETLIFY_USE_YARN = "true"
YARN_FLAGS = "--ignore-scripts"
# TODO: adjust these once https://github.com/netlify/build-image/issues/612 is resolved
YARN_ENABLE_GLOBAL_CACHE = "true"
YARN_GLOBAL_FOLDER = "/opt/buildhome/.yarn_cache"

# https://docs.netlify.com/configure-builds/file-based-configuration/#redirects

Expand Down
10 changes: 6 additions & 4 deletions nx.json
Original file line number Diff line number Diff line change
Expand Up @@ -32,17 +32,19 @@
}
},
"namedInputs": {
"default": [
"{projectRoot}/**/*",
"sharedGlobals",
"default": ["{projectRoot}/**/*", "sharedGlobals"],
"sharedGlobals": [
"{workspaceRoot}/.github/workflows/ci.yml",
{
"runtime": "node -v"
},
{
"runtime": "echo $NETLIFY"
},
{
"runtime": "yarn -v"
}
],
"sharedGlobals": ["{workspaceRoot}/.github/workflows/ci.yml"],
"production": ["default", "!{projectRoot}/src/test-setup.[jt]s"]
}
}
17 changes: 8 additions & 9 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,6 @@
"@babel/eslint-parser": "^7.22.7",
"@babel/parser": "^7.22.7",
"@babel/types": "^7.22.5",
"@nrwl/nx-cloud": "16.1.1",
"@nx/jest": "16.5.3",
"@nx/linter": "16.5.3",
"@nx/workspace": "16.5.3",
Expand All @@ -70,8 +69,8 @@
"@types/babel__core": "^7.20.1",
"@types/debug": "^4.1.8",
"@types/is-glob": "^4.0.2",
"@types/jest-specific-snapshot": "^0.5.6",
"@types/jest": "29.5.3",
"@types/jest-specific-snapshot": "^0.5.6",
"@types/marked": "^5.0.0",
"@types/natural-compare": "^1.4.1",
"@types/ncp": "^2.0.5",
Expand All @@ -83,8 +82,8 @@
"cross-fetch": "^4.0.0",
"cspell": "^6.31.1",
"downlevel-dts": ">=0.11.0",
"eslint-plugin-deprecation": "^1.4.1",
"eslint": "^8.44.0",
"eslint-plugin-deprecation": "^1.4.1",
"eslint-plugin-eslint-comments": "^3.2.0",
"eslint-plugin-eslint-plugin": "^5.1.0",
"eslint-plugin-import": "^2.27.5",
Expand All @@ -97,21 +96,21 @@
"execa": "7.1.1",
"glob": "^10.3.3",
"husky": "^8.0.3",
"jest-diff": "^29.6.1",
"jest-snapshot": "^29.6.1",
"jest-specific-snapshot": "^8.0.0",
"jest": "29.6.2",
"jest-diff": "^29.6.2",
"jest-snapshot": "^29.6.2",
"jest-specific-snapshot": "^8.0.0",
"lerna": "7.1.5",
"lint-staged": "^13.2.3",
"make-dir": "^4.0.0",
"markdownlint-cli": "^0.35.0",
"ncp": "^2.0.0",
"netlify": "^13.1.9",
"nx-cloud": "16.1.1",
"nx": "16.5.3",
"nx-cloud": "16.1.1",
"patch-package": "^8.0.0",
"prettier": "^2.8.4",
"pretty-format": "^29.6.1",
"pretty-format": "^29.6.2",
"raw-loader": "^4.0.2",
"rimraf": "^5.0.1",
"tmp": "^0.2.1",
Expand Down Expand Up @@ -145,5 +144,5 @@
"tsx": "^3.12.7",
"typescript": "5.2.1-rc"
},
"packageManager": "yarn@1.22.19"
"packageManager": "yarn@3.3.0"
}
9 changes: 6 additions & 3 deletions packages/ast-spec/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -49,11 +49,14 @@
"@babel/parser": "*",
"@microsoft/api-extractor": "^7.36.1",
"glob": "*",
"jest-diff": "*",
"jest-snapshot": "*",
"jest-specific-snapshot": "*",
"jest": "29.6.2",
"jest-diff": "^29.6.2",
"jest-snapshot": "^29.6.2",
"jest-specific-snapshot": "^8.0.0",
"make-dir": "*",
"prettier": "^2.8.4",
"pretty-format": "*",
"rimraf": "*",
"typescript": "*"
}
}
6 changes: 5 additions & 1 deletion packages/eslint-plugin-internal/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,10 @@
"@typescript-eslint/scope-manager": "6.4.0",
"@typescript-eslint/type-utils": "6.4.0",
"@typescript-eslint/utils": "6.4.0",
"prettier": "*"
"prettier": "^2.8.4"
},
"devDependencies": {
"jest": "29.6.2",
"rimraf": "*"
}
}
6 changes: 5 additions & 1 deletion packages/eslint-plugin-tslint/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,11 @@
"typescript": "*"
},
"devDependencies": {
"@typescript-eslint/parser": "6.4.0"
"@types/lodash": "*",
"@typescript-eslint/parser": "6.4.0",
"jest": "29.6.2",
"prettier": "^2.8.4",
"rimraf": "*"
},
"funding": {
"type": "opencollective",
Expand Down
8 changes: 6 additions & 2 deletions packages/eslint-plugin/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -78,12 +78,16 @@
"ajv": "^6.12.6",
"chalk": "^5.3.0",
"cross-fetch": "*",
"jest-specific-snapshot": "*",
"grapheme-splitter": "^1.0.4",
"jest": "29.6.2",
"jest-specific-snapshot": "^8.0.0",
"json-schema": "*",
"markdown-table": "^3.0.3",
"marked": "^5.1.1",
"prettier": "*",
"prettier": "^2.8.4",
"rimraf": "*",
"title-case": "^3.0.3",
"tsx": "*",
"typescript": "*"
},
"peerDependencies": {
Expand Down
2 changes: 1 addition & 1 deletion packages/integration-tests/project.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
"implicitDependencies": [],
"targets": {
"lint": {
"executor": "@nrwl/linter:eslint",
"executor": "@nx/linter:eslint",
"outputs": ["{options.outputFile}"],
"options": {
"lintFilePatterns": [
Expand Down
11 changes: 9 additions & 2 deletions packages/integration-tests/tools/integration-test-base.ts
Original file line number Diff line number Diff line change
Expand Up @@ -69,13 +69,20 @@ export function integrationTest(testFilename: string, filesGlob: string): void {
);
// console.log('package.json written.');

// Ensure yarn uses the node-modules linker and not PnP
await writeFile(
path.join(testFolder, '.yarnrc.yml'),
`nodeLinker: node-modules`,
);

await new Promise<void>((resolve, reject) => {
// we use the non-promise version so we can log everything on error
childProcess.execFile(
// we use yarn instead of npm as it will cache the remote packages and
// to make installs things faster
// make installing things faster
'yarn',
['install', '--no-lockfile', '--prefer-offline', '--no-progress'],
// We call explicitly with --no-immutable to prevent errors related to missing lock files in CI
['install', '--no-immutable'],
{
cwd: testFolder,
},
Expand Down
5 changes: 5 additions & 0 deletions packages/parser/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,12 @@
"debug": "^4.3.4"
},
"devDependencies": {
"@types/glob": "*",
"downlevel-dts": "*",
"glob": "*",
"jest": "29.6.2",
"prettier": "^2.8.4",
"rimraf": "*",
"typescript": "*"
},
"peerDependenciesMeta": {
Expand Down
3 changes: 2 additions & 1 deletion packages/repo-tools/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,10 @@
"typecheck": "tsc -p tsconfig.json --noEmit"
},
"devDependencies": {
"@nx/devkit": "*",
"cross-fetch": "*",
"execa": "*",
"prettier": "*",
"prettier": "^2.8.4",
"tmp": "*"
}
}
2 changes: 1 addition & 1 deletion packages/repo-tools/project.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
"implicitDependencies": [],
"targets": {
"lint": {
"executor": "@nrwl/linter:eslint",
"executor": "@nx/linter:eslint",
"outputs": ["{options.outputFile}"],
"options": {
"lintFilePatterns": ["packages/repo-tools/**/*.{mts,cts,ts,tsx}"],
Expand Down
18 changes: 8 additions & 10 deletions packages/repo-tools/src/postinstall.mts
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
import { $ as $_config } from 'execa';
import path from 'path';
import * as url from 'url';

const $ = $_config({
stdout: 'inherit',
Expand All @@ -9,9 +7,9 @@ const $ = $_config({
});

/**
* In certain circumstances we want to skip the below the steps and it may not always
* be possible to use --ignore-scripts (e.g. if another tool is what is invoking the
* install command, such as when nx migrate runs). We therefore use and env var for this.
* In certain circumstances we might want to skip the below the steps when another
* tool is invoking the install command (such as when nx migrate runs).
* We therefore use an env var for this.
*/

if (process.env.SKIP_POSTINSTALL) {
Expand All @@ -22,12 +20,12 @@ if (process.env.SKIP_POSTINSTALL) {
process.exit(0);
}

const __dirname = url.fileURLToPath(new URL('.', import.meta.url));
const REPO_ROOT = path.resolve(__dirname, '..', '..');

void (async function (): Promise<void> {
// make sure we're running from the root
process.chdir(REPO_ROOT);
// make sure we're running from the workspace root
const {
default: { workspaceRoot },
} = await import('@nx/devkit');
process.chdir(workspaceRoot);

// Apply patches to installed node_modules
await $`yarn patch-package`;
Expand Down
2 changes: 1 addition & 1 deletion packages/rule-schema-to-typescript-types/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@
"@typescript-eslint/type-utils": "6.4.0",
"@typescript-eslint/utils": "6.4.0",
"natural-compare": "^1.4.0",
"prettier": "*"
"prettier": "^2.8.4"
},
"funding": {
"type": "opencollective",
Expand Down
2 changes: 1 addition & 1 deletion packages/rule-schema-to-typescript-types/project.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
"implicitDependencies": [],
"targets": {
"lint": {
"executor": "@nrwl/linter:eslint",
"executor": "@nx/linter:eslint",
"outputs": ["{options.outputFile}"],
"options": {
"lintFilePatterns": [
Expand Down
2 changes: 1 addition & 1 deletion packages/scope-manager/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@
"glob": "*",
"jest-specific-snapshot": "*",
"make-dir": "*",
"prettier": "*",
"prettier": "^2.8.4",
"pretty-format": "*",
"rimraf": "*",
"typescript": "*"
Expand Down
Loading

0 comments on commit 2e1cfd5

Please sign in to comment.