mirror of
https://github.com/lucide-icons/lucide.git
synced 2026-11-10 13:18:25 +00:00
* ci: split lint-code into ESLint, Prettier and JSON Schema jobs with PR annotations - ESLint: annotations via setup-node's built-in eslint-stylish problem matcher. - Prettier: new scripts/lintFormat.mts formats unformatted files in memory, diffs them and emits line-level `::error` annotations with the expected code. - JSON Schema: replace ajv-cli with a local ESLint rule (Ajv draft 2020-12) that validates icons/categories JSON against their `$schema` and reports at the offending property. eslint-plugin-json-schema-validator was not used because it runs Ajv in draft-07 mode and ignores `dependentRequired`. All annotations use workflow commands, so they work on fork PRs with a read-only token. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FVxEtqNswEDq1N23taZYh8 * Improve root value check and property error handling Enhance error reporting for JSON schema validation. Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * style(lint): format jsonSchemaPlugin with Prettier Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FVxEtqNswEDq1N23taZYh8 * test commit * fix(lint): annotate syntax errors from Prettier and ESLint in PRs - ESLint/JSON Schema jobs use a small GitHub formatter that prints `::error` workflow commands. setup-node's eslint-stylish matcher skipped parsing errors because they have no rule id. - lintFormat.mts annotates Prettier syntax errors (exit code 2) at their line and column instead of only printing stderr, and still checks the other files. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FVxEtqNswEDq1N23taZYh8 * ci(lint): spell check icon and category metadata with cspell annotations - New "Spelling" job runs scripts/lintSpelling.mts, which turns cspell findings into `::error` annotations (with cspell's suggested fix when it has one). - cspell accepts both US and British English, ignores contributor usernames and deprecated `alias.typo` aliases. - Add existing search tags and domain terms to .cspell/custom-words.txt so the current metadata passes. - Add `lint:spelling` to `pnpm lint` and lint-staged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FVxEtqNswEDq1N23taZYh8 * fix(lint): pin JSON schemas per file set and drop typo tags - json-schema/no-invalid now takes the schema from config (icon.schema.json for icons, category.schema.json for categories) and reports a `$schema` that points elsewhere, so metadata can't opt out of validation. - Remove the misspelled `frigerator` and `sterisk` tags and their allowlist entries. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FVxEtqNswEDq1N23taZYh8 * fix(icons): split joined-word tags into separate words Tags like `groupchat` and `timemachine` become `group chat` and `time machine` so they read naturally and pass the spell check without allowlisting. Where the spaced tag already existed (`smart home`) the joined one is dropped. cspell now skips all alias names, since they are icon names that can't change (e.g. the deprecated `palmtree` alias). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FVxEtqNswEDq1N23taZYh8 * Revert * Try another error * Revert error --------- Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
100 lines
4.8 KiB
JSON
100 lines
4.8 KiB
JSON
{
|
|
"private": true,
|
|
"type": "module",
|
|
"scripts": {
|
|
"build": "pnpm -r --filter './packages/**' build",
|
|
"test": "pnpm -r --filter './packages/**' test",
|
|
"test:update": "pnpm -r --filter './packages/**' --filter !'./packages/lucide-angular' test -- -u",
|
|
"test:integrations:react": "pnpm --filter lucide-react build && pnpm -r --workspace-concurrency=1 --filter './integrations/lucide-react/**' check",
|
|
"test:integrations:solid": "pnpm --filter lucide-solid build && pnpm -r --workspace-concurrency=1 --filter './integrations/lucide-solid/**' check",
|
|
"test:integrations:solid-2": "pnpm --filter @lucide/solid build && pnpm -r --workspace-concurrency=1 --filter './integrations/lucide-solid-2/**' check",
|
|
"test:integrations:vue": "pnpm --filter @lucide/vue build && pnpm -r --workspace-concurrency=1 --filter './integrations/lucide-vue/**' check",
|
|
"test:font": "pnpm --filter build-font test",
|
|
"lucide": "pnpm --filter lucide",
|
|
"lucide-angular": "pnpm --filter lucide-angular",
|
|
"lucide-react": "pnpm --filter lucide-react",
|
|
"lucide-react-native": "pnpm --filter lucide-react-native",
|
|
"lucide-preact": "pnpm --filter lucide-preact",
|
|
"lucide-solid": "pnpm --filter lucide-solid",
|
|
"lucide-vue": "pnpm --filter lucide-vue",
|
|
"lucide-astro": "pnpm --filter @lucide/astro",
|
|
"lucide-vue-next": "pnpm --filter lucide-vue-next",
|
|
"lucide-svelte": "pnpm --filter lucide-svelte",
|
|
"lucide-static": "pnpm --filter lucide-static",
|
|
"build:outline-icons": "pnpm --filter outline-svg start",
|
|
"build:font": "pnpm --filter build-font start",
|
|
"optimize": "node ./scripts/optimizeSvgs.mts",
|
|
"addjsons": "node ./scripts/addMissingIconJsonFiles.mts",
|
|
"checkIcons": "node ./scripts/checkIconsAndCategories.mts",
|
|
"checkLabIcons": "node ./scripts/checkLabIcons.mts",
|
|
"generate:sponsors": "node scripts/updateSponsors.mts",
|
|
"generate:contributors": "node ./scripts/updateContributors.mts icons/*.svg",
|
|
"generate:nextJSAliases": "node ./scripts/generateNextJSAliases.mts",
|
|
"suggest:metadata": "node ./scripts/suggestMetaData.mts",
|
|
"suggest:metadata:debug": "node --env-file .env ./scripts/suggestMetaData.mts --debug",
|
|
"suggest:metadata:watch": "node --env-file .env --watch ./scripts/suggestMetaData.mts",
|
|
"postinstall": "husky",
|
|
"lint:es": "eslint . --ignore-pattern 'icons/*.json' --ignore-pattern 'categories/*.json'",
|
|
"lint:format": "prettier \"**/*.{js,mjs,ts,jsx,tsx,html,css,scss,json,yml,yaml}\" --check",
|
|
"lint:format-fix": "prettier \"**/*.{js,mjs,ts,jsx,tsx,html,css,scss,json,yml,yaml}\" --write",
|
|
"lint:icons": "prettier \"icons/*.svg\" --check",
|
|
"lint:icons-fix": "prettier \"icons/*.svg\" --write",
|
|
"lint:format:ci": "node ./scripts/lintFormat.mts",
|
|
"lint:json:icons": "eslint 'icons/*.json'",
|
|
"lint:json:categories": "eslint 'categories/*.json'",
|
|
"lint:json": "eslint 'icons/*.json' 'categories/*.json'",
|
|
"lint:spelling": "cspell --no-progress 'icons/*.json' 'categories/*.json'",
|
|
"lint:spelling:ci": "node ./scripts/lintSpelling.mts",
|
|
"lint:icons:all": "pnpm run lint:icons && pnpm run lint:json:icons",
|
|
"lint": "pnpm lint:es && pnpm lint:format && pnpm lint:json && pnpm lint:spelling && pnpm lint:icons",
|
|
"format": "prettier \"**/*.{js,mjs,ts,jsx,tsx,html,css,scss,json,yml,yaml}\" --write",
|
|
"prepare": "husky",
|
|
"gi": "node ./scripts/generate/generateIcons.mts",
|
|
"rename": "node ./scripts/rename/renameIcon.mts",
|
|
"renamePattern": "node ./scripts/rename/renamePattern.mts"
|
|
},
|
|
"devDependencies": {
|
|
"@actions/core": "^3.0.1",
|
|
"@actions/github": "^9.1.1",
|
|
"@eslint/compat": "^2.1.0",
|
|
"@eslint/js": "^10.0.1",
|
|
"@html-eslint/eslint-plugin": "^0.65.0",
|
|
"@html-eslint/parser": "^0.65.0",
|
|
"@octokit/rest": "^22.0.1",
|
|
"@types/yargs": "^17.0.35",
|
|
"@typescript-eslint/eslint-plugin": "^8.69.0",
|
|
"@typescript-eslint/parser": "^8.69.0",
|
|
"@vitest/coverage-v8": "5.0.3",
|
|
"@vitest/ui": "5.0.3",
|
|
"ajv": "^8.20.0",
|
|
"cpy-cli": "^7.0.0",
|
|
"cspell": "^10.2.0",
|
|
"dotenv": "^17.4.2",
|
|
"eslint": "^10.9.1",
|
|
"eslint-config-prettier": "^10.1.8",
|
|
"eslint-plugin-import-x": "^4.17.1",
|
|
"husky": "^9.1.7",
|
|
"jsdom": "^30.0.1",
|
|
"jsonc-eslint-parser": "^3.3.0",
|
|
"lint-staged": "^17.4.1",
|
|
"minimist": "^1.2.8",
|
|
"openai": "^7.9.0",
|
|
"p-memoize": "^8.0.0",
|
|
"prettier": "3.9.6",
|
|
"prettier-plugin-astro": "^0.14.1",
|
|
"semver": "^7.8.5",
|
|
"simple-git": "^4.0.1",
|
|
"svgo": "^4.1.0",
|
|
"svgson": "^5.3.1",
|
|
"typescript": "^6.0.3",
|
|
"typescript-eslint": "^8.69.0",
|
|
"vitest": "5.0.3",
|
|
"yargs": "^18.1.0",
|
|
"zod": "^4.5.4"
|
|
},
|
|
"engines": {
|
|
"node": ">=24.11.1"
|
|
},
|
|
"packageManager": "pnpm@11.22.0+sha512.1ff870c4c6133dfd88fb2afc46dd13d47f09c9794b438c6fdb47ca98caf3bc16381ee0be93a091b8e3824cf01f889f46d7d9e20910fb0be1ab0fb5baa80dd621"
|
|
}
|