diff --git a/.github/actions/build-and-test.yml b/.github/actions/build-and-test.yml deleted file mode 100644 index 5b5a4675f..000000000 --- a/.github/actions/build-and-test.yml +++ /dev/null @@ -1,44 +0,0 @@ -name: 'Build and Test' -description: 'Builds and test a package' - -inputs: - name: - description: “Name of the package” - required: true - -runs: - using: 'composite' - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 - with: - node-version: 16 - - - uses: pnpm/action-setup@v2 - name: Install pnpm - id: pnpm-install - with: - version: 8 - run_install: false - - - name: Get pnpm store directory - id: pnpm-cache - run: | - echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT - - - uses: actions/cache@v3 - name: Setup pnpm cache - with: - path: ${{ steps.pnpm-cache.outputs.STORE_PATH }} - key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} - restore-keys: | - ${{ runner.os }}-pnpm-store- - - - name: Install dependencies - run: pnpm install --filter lucide-preact - - - name: Build - run: pnpm --filter lucide-preact build - - - name: Test - run: pnpm --filter lucide-preact test diff --git a/.github/actions/check-icons.yml b/.github/actions/check-icons.yml deleted file mode 100644 index 0850a17ac..000000000 --- a/.github/actions/check-icons.yml +++ /dev/null @@ -1,41 +0,0 @@ -name: 'Check icons' -description: 'Cross-checks icon and category references in JSON descriptors' - -inputs: - name: - description: “Name of the package” - required: true - -runs: - using: 'composite' - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 - with: - node-version: 16 - - - uses: pnpm/action-setup@v2 - name: Install pnpm - id: pnpm-install - with: - version: 8 - run_install: false - - - name: Get pnpm store directory - id: pnpm-cache - run: | - echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT - - - uses: actions/cache@v3 - name: Setup pnpm cache - with: - path: ${{ steps.pnpm-cache.outputs.STORE_PATH }} - key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} - restore-keys: | - ${{ runner.os }}-pnpm-store- - - - name: Install dependencies - run: pnpm install --filter . - - - name: Check icons and categories - run: pnpm checkIcons diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b4a8048af..1384ee7d6 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -16,10 +16,9 @@ jobs: steps: - uses: actions/checkout@v4 - - uses: pnpm/action-setup@v2 + - uses: pnpm/action-setup@v4 - uses: actions/setup-node@v4 with: - node-version: 18 cache: 'pnpm' - name: Install dependencies diff --git a/.github/workflows/close-issue-with-banned-phrases.yml b/.github/workflows/close-issue-with-banned-phrases.yml index 39bcf8aae..5e1d1eca6 100644 --- a/.github/workflows/close-issue-with-banned-phrases.yml +++ b/.github/workflows/close-issue-with-banned-phrases.yml @@ -11,7 +11,7 @@ jobs: issues: write steps: - name: Checkout repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Check for blocked phrases in issue title run: | diff --git a/.github/workflows/pull-request.yml b/.github/workflows/linting-icons.yml similarity index 62% rename from .github/workflows/pull-request.yml rename to .github/workflows/linting-icons.yml index a20441278..6bee1daf3 100644 --- a/.github/workflows/pull-request.yml +++ b/.github/workflows/linting-icons.yml @@ -1,58 +1,55 @@ -name: Add Changed Icons comment +name: Linting Icons on: - pull_request_target: + pull_request: paths: - 'icons/*' - branches: - - main - - fix-icon-preview jobs: lint-filenames: + name: Lint Filenames if: github.repository == 'lucide-icons/lucide' runs-on: ubuntu-latest permissions: contents: read steps: - uses: actions/checkout@v4 - with: - fetch-depth: 0 - ref: refs/pull/${{ github.event.pull_request.number }}/merge - name: Get changed files id: changed-files uses: tj-actions/changed-files@v41 with: files: icons/* + - name: Generate annotations run: node ./scripts/lintFilenames.mjs env: CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }} lint-contributors: + name: Lint Contributors if: github.repository == 'lucide-icons/lucide' runs-on: ubuntu-latest permissions: contents: read steps: - uses: actions/checkout@v4 - with: - fetch-depth: 0 - ref: refs/pull/${{ github.event.pull_request.number }}/merge - name: Get changed files id: changed-files uses: tj-actions/changed-files@v41 with: files: icons/* + - uses: actions/setup-node@v4 - name: Install simple-git (safer and faster than installing all deps) run: npm install simple-git + - name: Generate annotations run: node ./scripts/updateContributors.mjs env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} FETCH_DEPTH: ${{ github.event.pull_request.commits }} CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }} + - name: Generate annotations env: ANNOTATION_SEVERITY: notice @@ -77,47 +74,3 @@ jobs: - uses: actions/checkout@v4 - name: Check Uniqueness of Aliases run: "! cat <(printf \"%s\\n\" icons/*.json | while read -r name; do basename \"$name\" .json; done) <(jq -cr 'select(.aliases) | .aliases[] | if type==\"string\" then . else .name end' icons/*.json) | sort | uniq -c | grep -ve '^\\s*1 '" - - generate-changed-icons-comment: - runs-on: ubuntu-latest - permissions: - contents: read - pull-requests: write - - steps: - - uses: actions/checkout@v4 - with: - fetch-depth: 0 - ref: refs/pull/${{ github.event.pull_request.number }}/merge - - - name: Get changed files - id: changed-files - uses: tj-actions/changed-files@v41 - with: - files: icons/*.svg - - - name: Find Comment - uses: peter-evans/find-comment@v2 - id: pr-comment - with: - issue-number: ${{ github.event.pull_request.number }} - comment-author: 'github-actions[bot]' - body-includes: Added or changed icons - - - uses: actions/setup-node@v4 - - name: Install svgson for code preview (safer and faster than installing all deps) - run: npm install svgson - - - name: Generate comment markup - run: node ./scripts/generateChangedIconsCommentMarkup.mjs >> comment-markup.md - id: comment-markup - env: - CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }} - - - name: Create or update comment - uses: peter-evans/create-or-update-comment@v3 - with: - comment-id: ${{ steps.pr-comment.outputs.comment-id }} - issue-number: ${{ github.event.pull_request.number }} - body-path: ./comment-markup.md - edit-mode: replace diff --git a/.github/workflows/linting.yml b/.github/workflows/linting.yml index b31306b45..fafde006b 100644 --- a/.github/workflows/linting.yml +++ b/.github/workflows/linting.yml @@ -1,4 +1,4 @@ -name: Linting +name: Linting PR on: pull_request: @@ -6,14 +6,13 @@ on: - '**' jobs: - linting: + lint-code: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: pnpm/action-setup@v2 + - uses: pnpm/action-setup@v4 - uses: actions/setup-node@v4 with: - node-version: 18 cache: 'pnpm' - name: Install Dependencies @@ -21,3 +20,25 @@ jobs: - name: Run Linter run: pnpm lint + + lint-PR-title: + name: PR Title Lint + runs-on: ubuntu-latest + steps: + - uses: amannn/action-semantic-pull-request@v5 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + types: | + fix + feat + perf + refactor + test + style + docs + ci + build + requireScope: true + ignoreLabels: | + bot diff --git a/.github/workflows/lucide-angular.yml b/.github/workflows/lucide-angular.yml index 143847741..48f993006 100644 --- a/.github/workflows/lucide-angular.yml +++ b/.github/workflows/lucide-angular.yml @@ -12,10 +12,9 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: pnpm/action-setup@v2 + - uses: pnpm/action-setup@v4 - uses: actions/setup-node@v4 with: - node-version: 18 cache: 'pnpm' - name: Install dependencies @@ -27,11 +26,10 @@ jobs: test: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - - uses: pnpm/action-setup@v2 - - uses: actions/setup-node@v3.8.1 + - uses: actions/checkout@v4 + - uses: pnpm/action-setup@v4 + - uses: actions/setup-node@v4 with: - node-version: 18 cache: 'pnpm' - name: Install dependencies diff --git a/.github/workflows/lucide-font.yml b/.github/workflows/lucide-font.yml index d9a771a7b..f493a6a78 100644 --- a/.github/workflows/lucide-font.yml +++ b/.github/workflows/lucide-font.yml @@ -12,10 +12,9 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: pnpm/action-setup@v2 + - uses: pnpm/action-setup@v4 - uses: actions/setup-node@v4 with: - node-version: 18 cache: 'pnpm' - name: Install dependencies @@ -28,7 +27,7 @@ jobs: run: pnpm build:font - name: 'Upload to Artifacts' - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: lucide-font path: lucide-font diff --git a/.github/workflows/lucide-preact.yml b/.github/workflows/lucide-preact.yml index 95da24757..ed8c6ced8 100644 --- a/.github/workflows/lucide-preact.yml +++ b/.github/workflows/lucide-preact.yml @@ -14,10 +14,9 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: pnpm/action-setup@v2 + - uses: pnpm/action-setup@v4 - uses: actions/setup-node@v4 with: - node-version: 18 cache: 'pnpm' - name: Install dependencies diff --git a/.github/workflows/lucide-react-native.yml b/.github/workflows/lucide-react-native.yml index 72806b730..567c0b55c 100644 --- a/.github/workflows/lucide-react-native.yml +++ b/.github/workflows/lucide-react-native.yml @@ -10,14 +10,28 @@ on: - pnpm-lock.yaml jobs: - lucide-react-native: + build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: pnpm/action-setup@v2 + - uses: pnpm/action-setup@v4 + - uses: actions/setup-node@v4 + with: + cache: 'pnpm' + + - name: Install dependencies + run: pnpm install --frozen-lockfile + + - name: Build + run: pnpm --filter lucide-react-native build + + test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: pnpm/action-setup@v4 - uses: actions/setup-node@v4 with: - node-version: 18 cache: 'pnpm' - name: Install dependencies diff --git a/.github/workflows/lucide-react.yml b/.github/workflows/lucide-react.yml index cd25adc0d..964f2ba46 100644 --- a/.github/workflows/lucide-react.yml +++ b/.github/workflows/lucide-react.yml @@ -15,10 +15,9 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: pnpm/action-setup@v2 + - uses: pnpm/action-setup@v4 - uses: actions/setup-node@v4 with: - node-version: 18 cache: 'pnpm' - name: Install dependencies @@ -30,11 +29,10 @@ jobs: test: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - - uses: pnpm/action-setup@v2 - - uses: actions/setup-node@v3.8.1 + - uses: actions/checkout@v4 + - uses: pnpm/action-setup@v4 + - uses: actions/setup-node@v4 with: - node-version: 18 cache: 'pnpm' - name: Install dependencies diff --git a/.github/workflows/lucide-shared.yml b/.github/workflows/lucide-shared.yml index 248ee8613..5a541a1f4 100644 --- a/.github/workflows/lucide-shared.yml +++ b/.github/workflows/lucide-shared.yml @@ -10,11 +10,10 @@ jobs: test: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - - uses: pnpm/action-setup@v2 - - uses: actions/setup-node@v3.8.1 + - uses: actions/checkout@v4 + - uses: pnpm/action-setup@v4 + - uses: actions/setup-node@v4 with: - node-version: 18 cache: 'pnpm' - name: Install dependencies diff --git a/.github/workflows/lucide-solid.yml b/.github/workflows/lucide-solid.yml index 8abeb75df..665574cf6 100644 --- a/.github/workflows/lucide-solid.yml +++ b/.github/workflows/lucide-solid.yml @@ -14,10 +14,9 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: pnpm/action-setup@v2 + - uses: pnpm/action-setup@v4 - uses: actions/setup-node@v4 with: - node-version: 18 cache: 'pnpm' - name: Install dependencies @@ -29,11 +28,10 @@ jobs: test: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - - uses: pnpm/action-setup@v2 - - uses: actions/setup-node@v3.8.1 + - uses: actions/checkout@v4 + - uses: pnpm/action-setup@v4 + - uses: actions/setup-node@v4 with: - node-version: 18 cache: 'pnpm' - name: Install dependencies diff --git a/.github/workflows/lucide-static.yml b/.github/workflows/lucide-static.yml index 02eace8bf..540b295e5 100644 --- a/.github/workflows/lucide-static.yml +++ b/.github/workflows/lucide-static.yml @@ -12,10 +12,9 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: pnpm/action-setup@v2 + - uses: pnpm/action-setup@v4 - uses: actions/setup-node@v4 with: - node-version: 18 cache: 'pnpm' - name: Install dependencies diff --git a/.github/workflows/lucide-svelte.yml b/.github/workflows/lucide-svelte.yml index 7603ce912..67a0ff9ef 100644 --- a/.github/workflows/lucide-svelte.yml +++ b/.github/workflows/lucide-svelte.yml @@ -14,10 +14,9 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: pnpm/action-setup@v2 + - uses: pnpm/action-setup@v4 - uses: actions/setup-node@v4 with: - node-version: 18 cache: 'pnpm' - name: Install dependencies @@ -29,11 +28,10 @@ jobs: test: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - - uses: pnpm/action-setup@v2 - - uses: actions/setup-node@v3.8.1 + - uses: actions/checkout@v4 + - uses: pnpm/action-setup@v4 + - uses: actions/setup-node@v4 with: - node-version: 18 cache: 'pnpm' - name: Install dependencies diff --git a/.github/workflows/lucide-vue-next.yml b/.github/workflows/lucide-vue-next.yml index 12c39f1a9..697627456 100644 --- a/.github/workflows/lucide-vue-next.yml +++ b/.github/workflows/lucide-vue-next.yml @@ -14,10 +14,9 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: pnpm/action-setup@v2 + - uses: pnpm/action-setup@v4 - uses: actions/setup-node@v4 with: - node-version: 18 cache: 'pnpm' - name: Install dependencies @@ -29,11 +28,10 @@ jobs: test: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - - uses: pnpm/action-setup@v2 - - uses: actions/setup-node@v3.8.1 + - uses: actions/checkout@v4 + - uses: pnpm/action-setup@v4 + - uses: actions/setup-node@v4 with: - node-version: 18 cache: 'pnpm' - name: Install dependencies diff --git a/.github/workflows/lucide-vue.yml b/.github/workflows/lucide-vue.yml deleted file mode 100644 index 37b67537f..000000000 --- a/.github/workflows/lucide-vue.yml +++ /dev/null @@ -1,43 +0,0 @@ -name: Lucide Vue checks - -on: - pull_request: - paths: - - packages/lucide-vue/** - - packages/shared/** - - tools/build-icons/** - - tools/rollup-plugins/** - - pnpm-lock.yaml - -jobs: - build: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: pnpm/action-setup@v2 - - uses: actions/setup-node@v4 - with: - node-version: 18 - cache: 'pnpm' - - - name: Install dependencies - run: pnpm install --frozen-lockfile - - - name: Build - run: pnpm --filter lucide-vue build - - test: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - uses: pnpm/action-setup@v2 - - uses: actions/setup-node@v3.8.1 - with: - node-version: 18 - cache: 'pnpm' - - - name: Install dependencies - run: pnpm install --frozen-lockfile - - - name: Test - run: pnpm --filter lucide-vue test diff --git a/.github/workflows/lucide.yml b/.github/workflows/lucide.yml index 1cc8d6f42..42a76f28c 100644 --- a/.github/workflows/lucide.yml +++ b/.github/workflows/lucide.yml @@ -13,10 +13,9 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: pnpm/action-setup@v2 + - uses: pnpm/action-setup@v4 - uses: actions/setup-node@v4 with: - node-version: 18 cache: 'pnpm' - name: Install dependencies @@ -28,11 +27,10 @@ jobs: test: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - - uses: pnpm/action-setup@v2 - - uses: actions/setup-node@v3.8.1 + - uses: actions/checkout@v4 + - uses: pnpm/action-setup@v4 + - uses: actions/setup-node@v4 with: - node-version: 18 cache: 'pnpm' - name: Install dependencies diff --git a/.github/workflows/pull-request-icon-preview.yml b/.github/workflows/pull-request-icon-preview.yml new file mode 100644 index 000000000..0f4317b94 --- /dev/null +++ b/.github/workflows/pull-request-icon-preview.yml @@ -0,0 +1,49 @@ +name: Pull request icon previews + +on: + pull_request: + paths: + - 'icons/*.svg' + +jobs: + generate-changed-icons-comment: + name: Generate Changed Icons Comment + runs-on: ubuntu-latest + permissions: + contents: read + pull-requests: write + + steps: + - uses: actions/checkout@v4 + + - name: Get changed files + id: changed-files + uses: tj-actions/changed-files@v41 + with: + files: icons/*.svg + + - name: Find Comment + uses: peter-evans/find-comment@v2 + id: pr-comment + with: + issue-number: ${{ github.event.pull_request.number }} + comment-author: 'github-actions[bot]' + body-includes: Added or changed icons + + - uses: actions/setup-node@v4 + - name: Install svgson for code preview (safer and faster than installing all deps) + run: npm install svgson + + - name: Generate comment markup + run: node ./scripts/generateChangedIconsCommentMarkup.mjs >> comment-markup.md + id: comment-markup + env: + CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }} + + - name: Create or update comment + uses: peter-evans/create-or-update-comment@v3 + with: + comment-id: ${{ steps.pr-comment.outputs.comment-id }} + issue-number: ${{ github.event.pull_request.number }} + body-path: ./comment-markup.md + edit-mode: replace diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index ceb84ea60..74d67e598 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -55,10 +55,9 @@ jobs: ] steps: - uses: actions/checkout@v4 - - uses: pnpm/action-setup@v2 + - uses: pnpm/action-setup@v4 - uses: actions/setup-node@v4 with: - node-version: 18 cache: 'pnpm' - name: Install dependencies @@ -85,11 +84,10 @@ jobs: needs: [pre-release, lucide-font] steps: - uses: actions/checkout@v4 - - uses: actions/download-artifact@v3 - - uses: pnpm/action-setup@v2 + - uses: actions/download-artifact@v4 + - uses: pnpm/action-setup@v4 - uses: actions/setup-node@v4 with: - node-version: 18 cache: 'pnpm' - name: Install dependencies @@ -116,10 +114,9 @@ jobs: needs: pre-release steps: - uses: actions/checkout@v4 - - uses: pnpm/action-setup@v2 + - uses: pnpm/action-setup@v4 - uses: actions/setup-node@v4 with: - node-version: 18 cache: 'pnpm' - name: Install dependencies @@ -132,7 +129,7 @@ jobs: run: pnpm build:font - name: 'Upload to Artifacts' - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: lucide-font path: lucide-font @@ -144,14 +141,14 @@ jobs: steps: - uses: actions/checkout@v4 - - uses: actions/download-artifact@v3 + - uses: actions/download-artifact@v4 - name: Zip font and icons run: | zip -r lucide-font-${{ needs.pre-release.outputs.VERSION }}.zip lucide-font zip -r lucide-icons-${{ needs.pre-release.outputs.VERSION }}.zip icons - name: Release zip and fonts - uses: softprops/action-gh-release@v1 + uses: softprops/action-gh-release@v2 with: tag_name: ${{ needs.pre-release.outputs.VERSION }} files: | diff --git a/package.json b/package.json index 154e540d5..70dbfc9fb 100644 --- a/package.json +++ b/package.json @@ -67,6 +67,9 @@ "svgson": "^5.3.1", "yargs": "^17.7.2" }, + "engines": { + "node": ">=23.0.0" + }, "packageManager": "pnpm@9.7.1+sha512.faf344af2d6ca65c4c5c8c2224ea77a81a5e8859cbc4e06b1511ddce2f0151512431dd19e6aff31f2c6a8f5f2aced9bd2273e1fed7dd4de1868984059d2c4247", "pnpm": { "packageExtensions": {