From 2d567b3c726125530dc13e6315d35549906a545b Mon Sep 17 00:00:00 2001 From: Jesse Oberstein <7157500+joberstein@users.noreply.github.com> Date: Mon, 23 Oct 2023 22:53:47 -0400 Subject: [PATCH 1/7] feat(load): use cosmiconfig-typescript-loader v5 to remove ts-node dependency for @commitlint/load --- @commitlint/load/package.json | 13 ++-- yarn.lock | 114 ++++------------------------------ 2 files changed, 16 insertions(+), 111 deletions(-) diff --git a/@commitlint/load/package.json b/@commitlint/load/package.json index db8c3bf719..891b67d80f 100644 --- a/@commitlint/load/package.json +++ b/@commitlint/load/package.json @@ -36,28 +36,25 @@ "license": "MIT", "devDependencies": { "@commitlint/test": "^18.0.0", - "@commitlint/utils": "^18.0.0", + "@commitlint/types": "^18.0.0", "@types/lodash.isplainobject": "^4.0.8", "@types/lodash.merge": "^4.6.8", "@types/lodash.uniq": "^4.5.8", + "@types/node": "^18.11.9", "conventional-changelog-atom": "^4.0.0", - "execa": "^5.0.0" + "typescript": "^5.2.2" }, "dependencies": { "@commitlint/config-validator": "^18.0.0", "@commitlint/execute-rule": "^18.0.0", "@commitlint/resolve-extends": "^18.0.0", - "@commitlint/types": "^18.0.0", - "@types/node": "^18.11.9", "chalk": "^4.1.0", "cosmiconfig": "^8.0.0", - "cosmiconfig-typescript-loader": "^4.0.0", + "cosmiconfig-typescript-loader": "^5.0.0", "lodash.isplainobject": "^4.0.6", "lodash.merge": "^4.6.2", "lodash.uniq": "^4.5.0", - "resolve-from": "^5.0.0", - "ts-node": "^10.8.1", - "typescript": "^5.2.2" + "resolve-from": "^5.0.0" }, "gitHead": "70f7f4688b51774e7ac5e40e896cdaa3f132b2bc" } diff --git a/yarn.lock b/yarn.lock index 0cacd1a7e2..08765c1dc8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -302,13 +302,6 @@ resolved "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== -"@cspotcode/source-map-support@^0.8.0": - version "0.8.1" - resolved "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" - integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== - dependencies: - "@jridgewell/trace-mapping" "0.3.9" - "@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": version "4.4.0" resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" @@ -615,11 +608,6 @@ "@jridgewell/sourcemap-codec" "^1.4.10" "@jridgewell/trace-mapping" "^0.3.9" -"@jridgewell/resolve-uri@^3.0.3": - version "3.1.0" - resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" - integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== - "@jridgewell/resolve-uri@^3.1.0": version "3.1.1" resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" @@ -635,14 +623,6 @@ resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== -"@jridgewell/trace-mapping@0.3.9": - version "0.3.9" - resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" - integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== - dependencies: - "@jridgewell/resolve-uri" "^3.0.3" - "@jridgewell/sourcemap-codec" "^1.4.10" - "@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.9": version "0.3.19" resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz#f8a3249862f91be48d3127c3cfe992f79b4b8811" @@ -1821,26 +1801,6 @@ resolved "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== -"@tsconfig/node10@^1.0.7": - version "1.0.9" - resolved "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz#df4907fc07a886922637b15e02d4cebc4c0021b2" - integrity sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA== - -"@tsconfig/node12@^1.0.7": - version "1.0.11" - resolved "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" - integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== - -"@tsconfig/node14@^1.0.0": - version "1.0.3" - resolved "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" - integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== - -"@tsconfig/node16@^1.0.2": - version "1.0.3" - resolved "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz#472eaab5f15c1ffdd7f8628bd4c4f753995ec79e" - integrity sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ== - "@types/babel__core@^7.1.14": version "7.20.2" resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.2.tgz#215db4f4a35d710256579784a548907237728756" @@ -2300,16 +2260,6 @@ acorn-jsx@^5.3.2: resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== -acorn-walk@^8.1.1: - version "8.2.0" - resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" - integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== - -acorn@^8.4.1: - version "8.7.1" - resolved "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz#0197122c843d1bf6d0a5e83220a788f278f63c30" - integrity sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A== - acorn@^8.9.0: version "8.10.0" resolved "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz#8be5b3907a67221a81ab23c7889c4c5526b62ec5" @@ -2475,11 +2425,6 @@ are-we-there-yet@^3.0.0: delegates "^1.0.0" readable-stream "^3.6.0" -arg@^4.1.0: - version "4.1.3" - resolved "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" - integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== - argparse@^1.0.7: version "1.0.10" resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" @@ -3374,10 +3319,12 @@ core-util-is@~1.0.0: resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== -cosmiconfig-typescript-loader@^4.0.0: - version "4.4.0" - resolved "https://registry.npmjs.org/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-4.4.0.tgz#f3feae459ea090f131df5474ce4b1222912319f9" - integrity sha512-BabizFdC3wBHhbI4kJh0VkQP9GkBfoHPydD0COMce1nJ1kJAB3F2TmJ/I7diULBKtmEWSwEbuN/KDtgnmUUVmw== +cosmiconfig-typescript-loader@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-5.0.0.tgz#0d3becfe022a871f7275ceb2397d692e06045dc8" + integrity sha512-+8cK7jRAReYkMwMiG+bxhcNKiHJDM6bR9FD/nGBXOWdMLuYawjF5cGrtLilJ+LGd3ZjCXnJjR5DkfWPoIVlqJA== + dependencies: + jiti "^1.19.1" cosmiconfig@^7.0.0: version "7.1.0" @@ -3423,11 +3370,6 @@ create-jest@^29.7.0: jest-util "^29.7.0" prompts "^2.0.1" -create-require@^1.1.0: - version "1.1.1" - resolved "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" - integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== - cross-env@^7.0.3: version "7.0.3" resolved "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz#865264b29677dc015ba8418918965dd232fc54cf" @@ -3637,11 +3579,6 @@ diff-sequences@^29.6.3: resolved "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz#4deaf894d11407c51efc8418012f9e70b84ea921" integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q== -diff@^4.0.1: - version "4.0.2" - resolved "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" - integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== - dir-glob@^3.0.1: version "3.0.1" resolved "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" @@ -5820,6 +5757,11 @@ jest@^29.6.2: import-local "^3.0.2" jest-cli "^29.7.0" +jiti@^1.19.1: + version "1.20.0" + resolved "https://registry.npmjs.org/jiti/-/jiti-1.20.0.tgz#2d823b5852ee8963585c8dd8b7992ffc1ae83b42" + integrity sha512-3TV69ZbrvV6U5DfQimop50jE9Dl6J8O1ja1dvBbMba/sZ3YBEQqJ2VZRoQPVnhlzjNtU1vaXRZVrVjU4qtm8yA== + js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -6296,11 +6238,6 @@ make-dir@^4.0.0: dependencies: semver "^7.5.3" -make-error@^1.1.1: - version "1.3.6" - resolved "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" - integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== - make-fetch-happen@^10.0.3, make-fetch-happen@^10.0.6: version "10.2.1" resolved "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz#f5e3835c5e9817b617f2770870d9492d28678164" @@ -8519,25 +8456,6 @@ ts-api-utils@^1.0.1: resolved "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz#f12c1c781d04427313dbac808f453f050e54a331" integrity sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg== -ts-node@^10.8.1: - version "10.9.1" - resolved "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b" - integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw== - dependencies: - "@cspotcode/source-map-support" "^0.8.0" - "@tsconfig/node10" "^1.0.7" - "@tsconfig/node12" "^1.0.7" - "@tsconfig/node14" "^1.0.0" - "@tsconfig/node16" "^1.0.2" - acorn "^8.4.1" - acorn-walk "^8.1.1" - arg "^4.1.0" - create-require "^1.1.0" - diff "^4.0.1" - make-error "^1.1.1" - v8-compile-cache-lib "^3.0.1" - yn "3.1.1" - tsconfig-paths@^3.14.2: version "3.14.2" resolved "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz#6e32f1f79412decd261f92d633a9dc1cfa99f088" @@ -8819,11 +8737,6 @@ uuid@^8.3.2: resolved "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== -v8-compile-cache-lib@^3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" - integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== - v8-compile-cache@2.3.0: version "2.3.0" resolved "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" @@ -9190,11 +9103,6 @@ yargs@^17.0.0, yargs@^17.3.1, yargs@^17.6.2: y18n "^5.0.5" yargs-parser "^21.1.1" -yn@3.1.1: - version "3.1.1" - resolved "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" - integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== - yocto-queue@^0.1.0: version "0.1.0" resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" From df34d80bd5629fe6d2c4dde23581d2725a708ca3 Mon Sep 17 00:00:00 2001 From: Jesse Oberstein <7157500+joberstein@users.noreply.github.com> Date: Tue, 7 Nov 2023 22:55:21 -0500 Subject: [PATCH 2/7] feat: conditionally support loading mjs config based on the node version --- .github/workflows/CI.yml | 73 +++---------------- .../load/fixtures/config/.commitlintrc | 4 + .../load/fixtures/config/.commitlintrc.cjs | 6 ++ .../load/fixtures/config/.commitlintrc.js | 6 ++ .../load/fixtures/config/.commitlintrc.json | 6 ++ .../load/fixtures/config/.commitlintrc.mjs | 6 ++ .../load/fixtures/config/.commitlintrc.yaml | 4 + .../load/fixtures/config/.commitlintrc.yml | 4 + .../fixtures/config/commitlint.config.cjs | 6 ++ .../load/fixtures/config/commitlint.config.js | 6 ++ .../fixtures/config/commitlint.config.mjs | 6 ++ @commitlint/load/fixtures/config/package.json | 13 ++++ .../first-extended/index.js | 6 ++ .../first-extended/second-extended/index.js | 5 ++ .../recursive-extends-ts/commitlint.config.ts | 2 +- .../first-extended/index.ts | 2 +- @commitlint/load/src/load.test.ts | 46 +++++++++++- @commitlint/load/src/utils/load-config.ts | 45 +++++++++++- package.json | 2 +- yarn.lock | 12 +-- 20 files changed, 183 insertions(+), 77 deletions(-) create mode 100644 @commitlint/load/fixtures/config/.commitlintrc create mode 100644 @commitlint/load/fixtures/config/.commitlintrc.cjs create mode 100644 @commitlint/load/fixtures/config/.commitlintrc.js create mode 100644 @commitlint/load/fixtures/config/.commitlintrc.json create mode 100644 @commitlint/load/fixtures/config/.commitlintrc.mjs create mode 100644 @commitlint/load/fixtures/config/.commitlintrc.yaml create mode 100644 @commitlint/load/fixtures/config/.commitlintrc.yml create mode 100644 @commitlint/load/fixtures/config/commitlint.config.cjs create mode 100644 @commitlint/load/fixtures/config/commitlint.config.js create mode 100644 @commitlint/load/fixtures/config/commitlint.config.mjs create mode 100644 @commitlint/load/fixtures/config/package.json create mode 100644 @commitlint/load/fixtures/recursive-extends-js-template/first-extended/index.js create mode 100644 @commitlint/load/fixtures/recursive-extends-js-template/first-extended/second-extended/index.js diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 03f18d0a0b..4e5f56eb49 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -8,77 +8,28 @@ on: types: [opened, synchronize] jobs: - v18: - runs-on: ubuntu-22.04 - container: - image: 'ubuntu:22.04' + build: + strategy: + matrix: + os: [ubuntu-22.04, windows-2022] + node: [18, 20] + runs-on: ${{ matrix.os }} steps: - - name: Install required dependencies - run: | - apt update - apt install --yes sudo - sudo apt install --yes git - sudo apt install --yes curl - curl --location https://deb.nodesource.com/setup_18.x | sudo --preserve-env bash - - sudo DEBIAN_FRONTEND=noninteractive apt install --yes nodejs - - uses: actions/checkout@v4 - # workaround for https://github.com/actions/runner/issues/2033 - - name: ownership workaround - run: git config --global --add safe.directory '*' - - name: Install yarn - run: | - npm install --global yarn - node --version - yarn global add yarn@latest - - name: Install dependencies - run: yarn install --ignore-engines --frozen-lockfile - - name: Build packages - run: yarn build - - name: Test - run: yarn test-ci + - uses: actions/setup-node@v3 + with: + node-version: ${{ matrix.node }} - v20: - runs-on: ubuntu-22.04 - container: - image: 'ubuntu:22.04' - steps: - - name: Install required dependencies - run: | - apt update - apt install --yes sudo - sudo apt install --yes git - sudo apt install --yes curl - curl --location https://deb.nodesource.com/setup_20.x | sudo --preserve-env bash - - sudo DEBIAN_FRONTEND=noninteractive apt install --yes nodejs - uses: actions/checkout@v4 + # workaround for https://github.com/actions/runner/issues/2033 - name: ownership workaround run: git config --global --add safe.directory '*' - - name: Install yarn - run: | - npm install --global yarn - node --version - yarn global add yarn@latest - - name: Install dependencies - run: yarn install --ignore-engines --frozen-lockfile - - name: Build packages - run: yarn build - - name: Test - run: yarn test-ci - windows: - runs-on: windows-2022 - steps: - - uses: actions/checkout@v4 - with: - max_attempts: 3 - - name: Update yarn - run: | - node --version - yarn global add yarn@latest - name: Install dependencies run: yarn install --ignore-engines --frozen-lockfile + - name: Build packages run: yarn build + - name: Test run: yarn test-ci diff --git a/@commitlint/load/fixtures/config/.commitlintrc b/@commitlint/load/fixtures/config/.commitlintrc new file mode 100644 index 0000000000..c612d4f34f --- /dev/null +++ b/@commitlint/load/fixtures/config/.commitlintrc @@ -0,0 +1,4 @@ +extends: + - './first-extended' +rules: + zero: [0, 'never'] \ No newline at end of file diff --git a/@commitlint/load/fixtures/config/.commitlintrc.cjs b/@commitlint/load/fixtures/config/.commitlintrc.cjs new file mode 100644 index 0000000000..c58cb47afc --- /dev/null +++ b/@commitlint/load/fixtures/config/.commitlintrc.cjs @@ -0,0 +1,6 @@ +module.exports = { + extends: ['./first-extended'], + rules: { + zero: [0, 'never'], + }, +}; \ No newline at end of file diff --git a/@commitlint/load/fixtures/config/.commitlintrc.js b/@commitlint/load/fixtures/config/.commitlintrc.js new file mode 100644 index 0000000000..c58cb47afc --- /dev/null +++ b/@commitlint/load/fixtures/config/.commitlintrc.js @@ -0,0 +1,6 @@ +module.exports = { + extends: ['./first-extended'], + rules: { + zero: [0, 'never'], + }, +}; \ No newline at end of file diff --git a/@commitlint/load/fixtures/config/.commitlintrc.json b/@commitlint/load/fixtures/config/.commitlintrc.json new file mode 100644 index 0000000000..a95915c9f6 --- /dev/null +++ b/@commitlint/load/fixtures/config/.commitlintrc.json @@ -0,0 +1,6 @@ +{ + "extends": ["./first-extended"], + "rules": { + "zero": [0, "never"] + } +} \ No newline at end of file diff --git a/@commitlint/load/fixtures/config/.commitlintrc.mjs b/@commitlint/load/fixtures/config/.commitlintrc.mjs new file mode 100644 index 0000000000..bd3061cabb --- /dev/null +++ b/@commitlint/load/fixtures/config/.commitlintrc.mjs @@ -0,0 +1,6 @@ +export default { + extends: ['./first-extended'], + rules: { + zero: [0, 'never'], + }, +}; \ No newline at end of file diff --git a/@commitlint/load/fixtures/config/.commitlintrc.yaml b/@commitlint/load/fixtures/config/.commitlintrc.yaml new file mode 100644 index 0000000000..c612d4f34f --- /dev/null +++ b/@commitlint/load/fixtures/config/.commitlintrc.yaml @@ -0,0 +1,4 @@ +extends: + - './first-extended' +rules: + zero: [0, 'never'] \ No newline at end of file diff --git a/@commitlint/load/fixtures/config/.commitlintrc.yml b/@commitlint/load/fixtures/config/.commitlintrc.yml new file mode 100644 index 0000000000..c612d4f34f --- /dev/null +++ b/@commitlint/load/fixtures/config/.commitlintrc.yml @@ -0,0 +1,4 @@ +extends: + - './first-extended' +rules: + zero: [0, 'never'] \ No newline at end of file diff --git a/@commitlint/load/fixtures/config/commitlint.config.cjs b/@commitlint/load/fixtures/config/commitlint.config.cjs new file mode 100644 index 0000000000..c58cb47afc --- /dev/null +++ b/@commitlint/load/fixtures/config/commitlint.config.cjs @@ -0,0 +1,6 @@ +module.exports = { + extends: ['./first-extended'], + rules: { + zero: [0, 'never'], + }, +}; \ No newline at end of file diff --git a/@commitlint/load/fixtures/config/commitlint.config.js b/@commitlint/load/fixtures/config/commitlint.config.js new file mode 100644 index 0000000000..c58cb47afc --- /dev/null +++ b/@commitlint/load/fixtures/config/commitlint.config.js @@ -0,0 +1,6 @@ +module.exports = { + extends: ['./first-extended'], + rules: { + zero: [0, 'never'], + }, +}; \ No newline at end of file diff --git a/@commitlint/load/fixtures/config/commitlint.config.mjs b/@commitlint/load/fixtures/config/commitlint.config.mjs new file mode 100644 index 0000000000..bd3061cabb --- /dev/null +++ b/@commitlint/load/fixtures/config/commitlint.config.mjs @@ -0,0 +1,6 @@ +export default { + extends: ['./first-extended'], + rules: { + zero: [0, 'never'], + }, +}; \ No newline at end of file diff --git a/@commitlint/load/fixtures/config/package.json b/@commitlint/load/fixtures/config/package.json new file mode 100644 index 0000000000..72a2dd6652 --- /dev/null +++ b/@commitlint/load/fixtures/config/package.json @@ -0,0 +1,13 @@ +{ + "commitlint": { + "extends": [ + "./first-extended" + ], + "rules": { + "zero": [ + 0, + "never" + ] + } + } +} \ No newline at end of file diff --git a/@commitlint/load/fixtures/recursive-extends-js-template/first-extended/index.js b/@commitlint/load/fixtures/recursive-extends-js-template/first-extended/index.js new file mode 100644 index 0000000000..8bc1854ccc --- /dev/null +++ b/@commitlint/load/fixtures/recursive-extends-js-template/first-extended/index.js @@ -0,0 +1,6 @@ +module.exports = { + extends: ['./second-extended'], + rules: { + one: [1, 'always'], + }, +}; diff --git a/@commitlint/load/fixtures/recursive-extends-js-template/first-extended/second-extended/index.js b/@commitlint/load/fixtures/recursive-extends-js-template/first-extended/second-extended/index.js new file mode 100644 index 0000000000..b0902ace44 --- /dev/null +++ b/@commitlint/load/fixtures/recursive-extends-js-template/first-extended/second-extended/index.js @@ -0,0 +1,5 @@ +module.exports = { + rules: { + two: [2, 'never'], + }, +}; diff --git a/@commitlint/load/fixtures/recursive-extends-ts/commitlint.config.ts b/@commitlint/load/fixtures/recursive-extends-ts/commitlint.config.ts index 396cef436b..fff038733a 100644 --- a/@commitlint/load/fixtures/recursive-extends-ts/commitlint.config.ts +++ b/@commitlint/load/fixtures/recursive-extends-ts/commitlint.config.ts @@ -1,7 +1,7 @@ import type {UserConfig} from './types'; const Configuration: UserConfig = { - extends: ['./first-extended'], + extends: ['./first-extended/index.ts'], rules: { zero: [0, 'never', 'zero'] } diff --git a/@commitlint/load/fixtures/recursive-extends-ts/first-extended/index.ts b/@commitlint/load/fixtures/recursive-extends-ts/first-extended/index.ts index 6111626aea..d6f3551f95 100644 --- a/@commitlint/load/fixtures/recursive-extends-ts/first-extended/index.ts +++ b/@commitlint/load/fixtures/recursive-extends-ts/first-extended/index.ts @@ -1,6 +1,6 @@ import type {UserConfig} from '../types'; module.exports = { - extends: ['./second-extended'], + extends: ['./second-extended/index.ts'], rules: { one: [1, 'never', 'one'] } diff --git a/@commitlint/load/src/load.test.ts b/@commitlint/load/src/load.test.ts index a2ec33d1b0..4bebee0c6b 100644 --- a/@commitlint/load/src/load.test.ts +++ b/@commitlint/load/src/load.test.ts @@ -7,10 +7,12 @@ jest.mock('@scope/commitlint-plugin-example', () => scopedPlugin, { }); import path from 'path'; +import {readFileSync, writeFileSync} from 'fs'; import resolveFrom from 'resolve-from'; import {fix, git, npm} from '@commitlint/test'; import load from './load'; +import {isDynamicAwaitSupported} from './utils/load-config'; const fixBootstrap = (name: string) => fix.bootstrap(name, __dirname); const gitBootstrap = (name: string) => git.bootstrap(name, __dirname); @@ -186,6 +188,44 @@ test('respects cwd option', async () => { }); }); +const mjsConfigFiles = isDynamicAwaitSupported() + ? ['commitlint.config.mjs', '.commitlintrc.mjs'] + : []; + +test.each( + [ + 'commitlint.config.cjs', + 'commitlint.config.js', + 'package.json', + '.commitlintrc.cjs', + '.commitlintrc.js', + '.commitlintrc.json', + '.commitlintrc.yml', + '.commitlintrc.yaml', + '.commitlintrc', + ...mjsConfigFiles, + ].map((configFile) => [configFile]) +)('recursive extends with %s', async (configFile) => { + const cwd = await gitBootstrap(`fixtures/recursive-extends-js-template`); + const configPath = path.join(__dirname, `../fixtures/config/${configFile}`); + const config = readFileSync(configPath); + + writeFileSync(path.join(cwd, configFile), config); + + const actual = await load({}, {cwd}); + + expect(actual).toMatchObject({ + formatter: '@commitlint/format', + extends: ['./first-extended'], + plugins: {}, + rules: { + zero: [0, 'never'], + one: [1, 'always'], + two: [2, 'never'], + }, + }); +}); + test('recursive extends', async () => { const cwd = await gitBootstrap('fixtures/recursive-extends'); const actual = await load({}, {cwd}); @@ -266,15 +306,13 @@ test('recursive extends with package.json file', async () => { }); }); -// fails since a jest update: https://github.com/conventional-changelog/commitlint/pull/3362 -// eslint-disable-next-line jest/no-disabled-tests -test.skip('recursive extends with ts file', async () => { +test('recursive extends with ts file', async () => { const cwd = await gitBootstrap('fixtures/recursive-extends-ts'); const actual = await load({}, {cwd}); expect(actual).toMatchObject({ formatter: '@commitlint/format', - extends: ['./first-extended'], + extends: ['./first-extended/index.ts'], plugins: {}, rules: { zero: [0, 'never', 'zero'], diff --git a/@commitlint/load/src/utils/load-config.ts b/@commitlint/load/src/utils/load-config.ts index b8cc16b98b..e08353d8c4 100644 --- a/@commitlint/load/src/utils/load-config.ts +++ b/@commitlint/load/src/utils/load-config.ts @@ -1,4 +1,9 @@ -import {cosmiconfig, type Loader} from 'cosmiconfig'; +import { + cosmiconfig, + defaultLoadersSync, + Options, + type Loader, +} from 'cosmiconfig'; import {TypeScriptLoader} from 'cosmiconfig-typescript-loader'; import path from 'path'; @@ -8,12 +13,12 @@ export interface LoadConfigResult { isEmpty?: boolean; } +const moduleName = 'commitlint'; + export async function loadConfig( cwd: string, configPath?: string ): Promise { - const moduleName = 'commitlint'; - let tsLoaderInstance: Loader | undefined; const tsLoader: Loader = (...args) => { if (!tsLoaderInstance) { @@ -22,6 +27,8 @@ export async function loadConfig( return tsLoaderInstance(...args); }; + const {searchPlaces, loaders} = getDynamicAwaitConfig(); + const explorer = cosmiconfig(moduleName, { searchPlaces: [ // cosmiconfig overrides default searchPlaces if any new search place is added (For e.g. `*.ts` files), @@ -41,10 +48,14 @@ export async function loadConfig( `.${moduleName}rc.cts`, `${moduleName}.config.ts`, `${moduleName}.config.cts`, + + ...(searchPlaces || []), ], loaders: { '.ts': tsLoader, '.cts': tsLoader, + + ...(loaders || {}), }, }); @@ -59,3 +70,31 @@ export async function loadConfig( return null; } + +// See the following issues for more context: +// - Issue: https://github.com/nodejs/node/issues/40058 +// - Resolution: https://github.com/nodejs/node/pull/48510 (Node v20.8.0) +export const isDynamicAwaitSupported = () => { + const [major, minor] = process.version + .replace('v', '') + .split('.') + .map((val) => parseInt(val)); + + return major >= 20 && minor >= 8; +}; + +// If dynamic await is supported (Node >= v20.8.0), support mjs config. +// Otherwise, don't support mjs and use synchronous js/cjs loaders. +export const getDynamicAwaitConfig = (): Partial => + isDynamicAwaitSupported() + ? { + searchPlaces: [`.${moduleName}rc.mjs`, `${moduleName}.config.mjs`], + loaders: {}, + } + : { + searchPlaces: [], + loaders: { + '.cjs': defaultLoadersSync['.cjs'], + '.js': defaultLoadersSync['.js'], + }, + }; diff --git a/package.json b/package.json index 612c350c6a..3f2eb45e73 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,7 @@ "publish": "lerna publish --conventional-commits", "reinstall": "yarn clean && yarn install", "start": "yarn watch", - "test": "cross-env HOME=$PWD jest", + "test": "cross-env HOME=$PWD NODE_OPTIONS=--experimental-vm-modules jest", "test-ci": "cross-env HOME=$PWD jest --runInBand", "postinstall": "yarn husky install" }, diff --git a/yarn.lock b/yarn.lock index cdc3054451..9642e7bc0d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3335,13 +3335,13 @@ cosmiconfig@^7.0.0: yaml "^1.10.0" cosmiconfig@^8.0.0: - version "8.1.3" - resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.1.3.tgz#0e614a118fcc2d9e5afc2f87d53cd09931015689" - integrity sha512-/UkO2JKI18b5jVMJUp0lvKFMpa/Gye+ZgZjKD+DGEN9y7NRcf/nK1A0sp67ONmKtnDCNMS44E6jrk0Yc3bDuUw== + version "8.3.6" + resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz#060a2b871d66dba6c8538ea1118ba1ac16f5fae3" + integrity sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA== dependencies: - import-fresh "^3.2.1" + import-fresh "^3.3.0" js-yaml "^4.1.0" - parse-json "^5.0.0" + parse-json "^5.2.0" path-type "^4.0.0" cp-file@^7.0.0: @@ -4891,7 +4891,7 @@ ignore@^5.0.4, ignore@^5.2.0, ignore@^5.2.4: resolved "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== -import-fresh@^3.0.0, import-fresh@^3.2.1: +import-fresh@^3.0.0, import-fresh@^3.2.1, import-fresh@^3.3.0: version "3.3.0" resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== From 9e04c191a16051965148ad8033acfe3a50249fca Mon Sep 17 00:00:00 2001 From: Jesse Oberstein <7157500+joberstein@users.noreply.github.com> Date: Tue, 7 Nov 2023 23:07:03 -0500 Subject: [PATCH 3/7] chore: update 'test-ci' command --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 3f2eb45e73..a8ca4dfc3d 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,7 @@ "reinstall": "yarn clean && yarn install", "start": "yarn watch", "test": "cross-env HOME=$PWD NODE_OPTIONS=--experimental-vm-modules jest", - "test-ci": "cross-env HOME=$PWD jest --runInBand", + "test-ci": "yarn test --runInBand", "postinstall": "yarn husky install" }, "commitlint": { From ff2541fc73587239ab4648dbb39e687068b749e3 Mon Sep 17 00:00:00 2001 From: Jesse Oberstein <7157500+joberstein@users.noreply.github.com> Date: Tue, 7 Nov 2023 23:09:22 -0500 Subject: [PATCH 4/7] chore: add yarn cache to ci --- .github/workflows/CI.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 4e5f56eb49..2b0a816ec2 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -18,6 +18,7 @@ jobs: - uses: actions/setup-node@v3 with: node-version: ${{ matrix.node }} + cache: yarn - uses: actions/checkout@v4 From b233fbd5da867a0265b3d9641335de764f1b2cc5 Mon Sep 17 00:00:00 2001 From: Jesse Oberstein <7157500+joberstein@users.noreply.github.com> Date: Tue, 7 Nov 2023 23:12:40 -0500 Subject: [PATCH 5/7] chore: swap node and checkout order. Remove ownership workaround --- .github/workflows/CI.yml | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 2b0a816ec2..f8e55f62ae 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -15,17 +15,13 @@ jobs: node: [18, 20] runs-on: ${{ matrix.os }} steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v3 with: node-version: ${{ matrix.node }} cache: yarn - - uses: actions/checkout@v4 - - # workaround for https://github.com/actions/runner/issues/2033 - - name: ownership workaround - run: git config --global --add safe.directory '*' - - name: Install dependencies run: yarn install --ignore-engines --frozen-lockfile From b1602180957fc0ee7ee265b39bdb86724e675fb3 Mon Sep 17 00:00:00 2001 From: Jesse Oberstein <7157500+joberstein@users.noreply.github.com> Date: Wed, 8 Nov 2023 00:03:20 -0500 Subject: [PATCH 6/7] chore(load): remove duplicate tests --- .../recursive-extends-js/.commitlintrc.js | 6 -- .../first-extended/index.js | 6 -- .../first-extended/second-extended/index.js | 5 -- .../recursive-extends-json/.commitlintrc.json | 6 -- .../first-extended/index.js | 6 -- .../first-extended/second-extended/index.js | 5 -- .../first-extended/index.js | 6 -- .../first-extended/second-extended/index.js | 5 -- .../recursive-extends-package/package.json | 13 --- .../recursive-extends-yaml/.commitlintrc.yml | 4 - .../first-extended/index.js | 6 -- .../first-extended/second-extended/index.js | 5 -- @commitlint/load/src/load.test.ts | 82 +------------------ 13 files changed, 1 insertion(+), 154 deletions(-) delete mode 100644 @commitlint/load/fixtures/recursive-extends-js/.commitlintrc.js delete mode 100644 @commitlint/load/fixtures/recursive-extends-js/first-extended/index.js delete mode 100644 @commitlint/load/fixtures/recursive-extends-js/first-extended/second-extended/index.js delete mode 100644 @commitlint/load/fixtures/recursive-extends-json/.commitlintrc.json delete mode 100644 @commitlint/load/fixtures/recursive-extends-json/first-extended/index.js delete mode 100644 @commitlint/load/fixtures/recursive-extends-json/first-extended/second-extended/index.js delete mode 100644 @commitlint/load/fixtures/recursive-extends-package/first-extended/index.js delete mode 100644 @commitlint/load/fixtures/recursive-extends-package/first-extended/second-extended/index.js delete mode 100644 @commitlint/load/fixtures/recursive-extends-package/package.json delete mode 100644 @commitlint/load/fixtures/recursive-extends-yaml/.commitlintrc.yml delete mode 100644 @commitlint/load/fixtures/recursive-extends-yaml/first-extended/index.js delete mode 100644 @commitlint/load/fixtures/recursive-extends-yaml/first-extended/second-extended/index.js diff --git a/@commitlint/load/fixtures/recursive-extends-js/.commitlintrc.js b/@commitlint/load/fixtures/recursive-extends-js/.commitlintrc.js deleted file mode 100644 index f90e771292..0000000000 --- a/@commitlint/load/fixtures/recursive-extends-js/.commitlintrc.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - extends: ['./first-extended'], - rules: { - zero: [0, 'never'], - }, -}; diff --git a/@commitlint/load/fixtures/recursive-extends-js/first-extended/index.js b/@commitlint/load/fixtures/recursive-extends-js/first-extended/index.js deleted file mode 100644 index d26b0ff209..0000000000 --- a/@commitlint/load/fixtures/recursive-extends-js/first-extended/index.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - extends: ['./second-extended'], - rules: { - one: [1, 'never'], - }, -}; diff --git a/@commitlint/load/fixtures/recursive-extends-js/first-extended/second-extended/index.js b/@commitlint/load/fixtures/recursive-extends-js/first-extended/second-extended/index.js deleted file mode 100644 index 64caae544a..0000000000 --- a/@commitlint/load/fixtures/recursive-extends-js/first-extended/second-extended/index.js +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = { - rules: { - two: [2, 'always'], - }, -}; diff --git a/@commitlint/load/fixtures/recursive-extends-json/.commitlintrc.json b/@commitlint/load/fixtures/recursive-extends-json/.commitlintrc.json deleted file mode 100644 index 97335f47a5..0000000000 --- a/@commitlint/load/fixtures/recursive-extends-json/.commitlintrc.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "extends": ["./first-extended"], - "rules": { - "zero": [0, "never"] - } -} diff --git a/@commitlint/load/fixtures/recursive-extends-json/first-extended/index.js b/@commitlint/load/fixtures/recursive-extends-json/first-extended/index.js deleted file mode 100644 index 8bc1854ccc..0000000000 --- a/@commitlint/load/fixtures/recursive-extends-json/first-extended/index.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - extends: ['./second-extended'], - rules: { - one: [1, 'always'], - }, -}; diff --git a/@commitlint/load/fixtures/recursive-extends-json/first-extended/second-extended/index.js b/@commitlint/load/fixtures/recursive-extends-json/first-extended/second-extended/index.js deleted file mode 100644 index b0902ace44..0000000000 --- a/@commitlint/load/fixtures/recursive-extends-json/first-extended/second-extended/index.js +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = { - rules: { - two: [2, 'never'], - }, -}; diff --git a/@commitlint/load/fixtures/recursive-extends-package/first-extended/index.js b/@commitlint/load/fixtures/recursive-extends-package/first-extended/index.js deleted file mode 100644 index d26b0ff209..0000000000 --- a/@commitlint/load/fixtures/recursive-extends-package/first-extended/index.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - extends: ['./second-extended'], - rules: { - one: [1, 'never'], - }, -}; diff --git a/@commitlint/load/fixtures/recursive-extends-package/first-extended/second-extended/index.js b/@commitlint/load/fixtures/recursive-extends-package/first-extended/second-extended/index.js deleted file mode 100644 index b0902ace44..0000000000 --- a/@commitlint/load/fixtures/recursive-extends-package/first-extended/second-extended/index.js +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = { - rules: { - two: [2, 'never'], - }, -}; diff --git a/@commitlint/load/fixtures/recursive-extends-package/package.json b/@commitlint/load/fixtures/recursive-extends-package/package.json deleted file mode 100644 index 704cc882f1..0000000000 --- a/@commitlint/load/fixtures/recursive-extends-package/package.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "commitlint": { - "extends": [ - "./first-extended" - ], - "rules": { - "zero": [ - 0, - "never" - ] - } - } -} diff --git a/@commitlint/load/fixtures/recursive-extends-yaml/.commitlintrc.yml b/@commitlint/load/fixtures/recursive-extends-yaml/.commitlintrc.yml deleted file mode 100644 index c7c751a959..0000000000 --- a/@commitlint/load/fixtures/recursive-extends-yaml/.commitlintrc.yml +++ /dev/null @@ -1,4 +0,0 @@ -extends: - - './first-extended' -rules: - zero: [0, 'never'] diff --git a/@commitlint/load/fixtures/recursive-extends-yaml/first-extended/index.js b/@commitlint/load/fixtures/recursive-extends-yaml/first-extended/index.js deleted file mode 100644 index d26b0ff209..0000000000 --- a/@commitlint/load/fixtures/recursive-extends-yaml/first-extended/index.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - extends: ['./second-extended'], - rules: { - one: [1, 'never'], - }, -}; diff --git a/@commitlint/load/fixtures/recursive-extends-yaml/first-extended/second-extended/index.js b/@commitlint/load/fixtures/recursive-extends-yaml/first-extended/second-extended/index.js deleted file mode 100644 index 64caae544a..0000000000 --- a/@commitlint/load/fixtures/recursive-extends-yaml/first-extended/second-extended/index.js +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = { - rules: { - two: [2, 'always'], - }, -}; diff --git a/@commitlint/load/src/load.test.ts b/@commitlint/load/src/load.test.ts index 4bebee0c6b..c2b053689e 100644 --- a/@commitlint/load/src/load.test.ts +++ b/@commitlint/load/src/load.test.ts @@ -197,12 +197,12 @@ test.each( 'commitlint.config.cjs', 'commitlint.config.js', 'package.json', + '.commitlintrc', '.commitlintrc.cjs', '.commitlintrc.js', '.commitlintrc.json', '.commitlintrc.yml', '.commitlintrc.yaml', - '.commitlintrc', ...mjsConfigFiles, ].map((configFile) => [configFile]) )('recursive extends with %s', async (configFile) => { @@ -226,86 +226,6 @@ test.each( }); }); -test('recursive extends', async () => { - const cwd = await gitBootstrap('fixtures/recursive-extends'); - const actual = await load({}, {cwd}); - - expect(actual).toMatchObject({ - formatter: '@commitlint/format', - extends: ['./first-extended'], - plugins: {}, - rules: { - zero: [0, 'never'], - one: [1, 'always'], - two: [2, 'never'], - }, - }); -}); - -test('recursive extends with json file', async () => { - const cwd = await gitBootstrap('fixtures/recursive-extends-json'); - const actual = await load({}, {cwd}); - - expect(actual).toMatchObject({ - formatter: '@commitlint/format', - extends: ['./first-extended'], - plugins: {}, - rules: { - zero: [0, 'never'], - one: [1, 'always'], - two: [2, 'never'], - }, - }); -}); - -test('recursive extends with yaml file', async () => { - const cwd = await gitBootstrap('fixtures/recursive-extends-yaml'); - const actual = await load({}, {cwd}); - - expect(actual).toMatchObject({ - formatter: '@commitlint/format', - extends: ['./first-extended'], - plugins: {}, - rules: { - zero: [0, 'never'], - one: [1, 'never'], - two: [2, 'always'], - }, - }); -}); - -test('recursive extends with js file', async () => { - const cwd = await gitBootstrap('fixtures/recursive-extends-js'); - const actual = await load({}, {cwd}); - - expect(actual).toMatchObject({ - formatter: '@commitlint/format', - extends: ['./first-extended'], - plugins: {}, - rules: { - zero: [0, 'never'], - one: [1, 'never'], - two: [2, 'always'], - }, - }); -}); - -test('recursive extends with package.json file', async () => { - const cwd = await gitBootstrap('fixtures/recursive-extends-package'); - const actual = await load({}, {cwd}); - - expect(actual).toMatchObject({ - formatter: '@commitlint/format', - extends: ['./first-extended'], - plugins: {}, - rules: { - zero: [0, 'never'], - one: [1, 'never'], - two: [2, 'never'], - }, - }); -}); - test('recursive extends with ts file', async () => { const cwd = await gitBootstrap('fixtures/recursive-extends-ts'); const actual = await load({}, {cwd}); From fdecba039bbd4ce0edb4e2337e7b895d5c6d6dfc Mon Sep 17 00:00:00 2001 From: Jesse Oberstein <7157500+joberstein@users.noreply.github.com> Date: Thu, 9 Nov 2023 23:58:38 -0500 Subject: [PATCH 7/7] docs: add mjs config files to README --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index fb3a68173f..a70bc84e67 100644 --- a/README.md +++ b/README.md @@ -142,10 +142,12 @@ Check the [husky documentation](https://typicode.github.io/husky/#/?id=manual) o - `.commitlintrc.yml` - `.commitlintrc.js` - `.commitlintrc.cjs` + - `.commitlintrc.mjs` (Node >= v20.8.0) - `.commitlintrc.ts` - `.commitlintrc.cts` - `commitlint.config.js` - `commitlint.config.cjs` + - `commitlint.config.mjs` (Node >= v20.8.0) - `commitlint.config.ts` - `commitlint.config.cts` - `commitlint` field in `package.json`