├── prettier.config.js ├── tsconfig.json ├── tsconfig.cjs.json ├── tsconfig.esm.json ├── dist ├── esm │ ├── index.js │ ├── vue.js │ ├── astro.js │ ├── html.js │ └── svelte.js └── cjs │ ├── index.js │ ├── vue.js │ ├── astro.js │ ├── html.js │ └── svelte.js ├── src ├── index.ts ├── vue.ts ├── astro.ts ├── html.ts └── svelte.ts ├── .editorconfig ├── tsconfig.base.json ├── eslint.config.js ├── stylelint.config.js ├── .versionrc.js ├── .scripts ├── fix-cjs.cjs └── next-version.cjs ├── .gitignore ├── LICENSE ├── CHANGELOG.md ├── commitlint.config.js ├── README.md └── package.json /prettier.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | printWidth: 100, 3 | trailingComma: 'none', 4 | tabWidth: 4, 5 | singleQuote: true, 6 | proseWrap: 'always', 7 | overrides: [] 8 | }; 9 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.base.json", 3 | "compilerOptions": { 4 | "module": "esnext", 5 | "moduleResolution": "bundler", 6 | "noEmit": true 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /tsconfig.cjs.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.base.json", 3 | "compilerOptions": { 4 | "outDir": "dist/cjs", 5 | "module": "commonjs", 6 | "moduleResolution": "node" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /tsconfig.esm.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.base.json", 3 | "compilerOptions": { 4 | "outDir": "dist/esm", 5 | "module": "esnext", 6 | "moduleResolution": "bundler" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /dist/esm/index.js: -------------------------------------------------------------------------------- 1 | const packageName = 'stylelint-config-astro'; 2 | const config = { 3 | extends: [`${packageName}/astro`, `${packageName}/vue`, `${packageName}/svelte`, `${packageName}/html`] 4 | }; 5 | export default config; 6 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | const packageName = 'stylelint-config-astro'; 2 | 3 | const config = { 4 | extends: [`${packageName}/astro`, `${packageName}/vue`, `${packageName}/svelte`, `${packageName}/html`] 5 | }; 6 | 7 | export default config; 8 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | end_of_line = lf 6 | insert_final_newline = true 7 | indent_style = space 8 | indent_size = 4 9 | trim_trailing_whitespace = true 10 | 11 | [*.md] 12 | trim_trailing_whitespace = false 13 | 14 | [*.yml] 15 | indent_size = 2 16 | -------------------------------------------------------------------------------- /dist/esm/vue.js: -------------------------------------------------------------------------------- 1 | const vueExtensions = ['.vue']; 2 | const config = { 3 | overrides: [ 4 | { 5 | files: vueExtensions.flatMap((ext) => [`*${ext}`, `**/*${ext}`]), 6 | customSyntax: 'postcss-html' 7 | } 8 | ] 9 | }; 10 | export default config; 11 | -------------------------------------------------------------------------------- /dist/esm/astro.js: -------------------------------------------------------------------------------- 1 | const astroExtensions = ['.astro']; 2 | const config = { 3 | overrides: [ 4 | { 5 | files: astroExtensions.flatMap((ext) => [`*${ext}`, `**/*${ext}`]), 6 | customSyntax: 'postcss-html' 7 | } 8 | ] 9 | }; 10 | export default config; 11 | -------------------------------------------------------------------------------- /src/vue.ts: -------------------------------------------------------------------------------- 1 | const vueExtensions = ['.vue']; 2 | 3 | const config = { 4 | overrides: [ 5 | { 6 | files: vueExtensions.flatMap((ext) => [`*${ext}`, `**/*${ext}`]), 7 | customSyntax: 'postcss-html' 8 | } 9 | ] 10 | }; 11 | 12 | export default config; 13 | -------------------------------------------------------------------------------- /dist/esm/html.js: -------------------------------------------------------------------------------- 1 | const htmlExtensions = ['.html', '.htm']; 2 | const config = { 3 | overrides: [ 4 | { 5 | files: htmlExtensions.flatMap((ext) => [`*${ext}`, `**/*${ext}`]), 6 | customSyntax: 'postcss-html' 7 | } 8 | ] 9 | }; 10 | export default config; 11 | -------------------------------------------------------------------------------- /dist/esm/svelte.js: -------------------------------------------------------------------------------- 1 | const svelteExtensions = ['.svelte']; 2 | const config = { 3 | overrides: [ 4 | { 5 | files: svelteExtensions.flatMap((ext) => [`*${ext}`, `**/*${ext}`]), 6 | customSyntax: 'postcss-html' 7 | } 8 | ] 9 | }; 10 | export default config; 11 | -------------------------------------------------------------------------------- /src/astro.ts: -------------------------------------------------------------------------------- 1 | const astroExtensions = ['.astro']; 2 | 3 | const config = { 4 | overrides: [ 5 | { 6 | files: astroExtensions.flatMap((ext) => [`*${ext}`, `**/*${ext}`]), 7 | customSyntax: 'postcss-html' 8 | } 9 | ] 10 | }; 11 | 12 | export default config; 13 | -------------------------------------------------------------------------------- /src/html.ts: -------------------------------------------------------------------------------- 1 | const htmlExtensions = ['.html', '.htm']; 2 | 3 | const config = { 4 | overrides: [ 5 | { 6 | files: htmlExtensions.flatMap((ext) => [`*${ext}`, `**/*${ext}`]), 7 | customSyntax: 'postcss-html' 8 | } 9 | ] 10 | }; 11 | 12 | export default config; 13 | -------------------------------------------------------------------------------- /src/svelte.ts: -------------------------------------------------------------------------------- 1 | const svelteExtensions = ['.svelte']; 2 | 3 | const config = { 4 | overrides: [ 5 | { 6 | files: svelteExtensions.flatMap((ext) => [`*${ext}`, `**/*${ext}`]), 7 | customSyntax: 'postcss-html' 8 | } 9 | ] 10 | }; 11 | 12 | export default config; 13 | -------------------------------------------------------------------------------- /tsconfig.base.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es2022", 4 | "rootDir": "src", 5 | "resolveJsonModule": true, 6 | "strictNullChecks": true, 7 | "isolatedModules": false, 8 | "types": ["node"] 9 | }, 10 | "include": ["src/**/*.ts"] 11 | } 12 | -------------------------------------------------------------------------------- /eslint.config.js: -------------------------------------------------------------------------------- 1 | const neostandard = require('neostandard'); 2 | 3 | module.exports = [ 4 | ...neostandard({ 5 | env: ['node', 'browser', 'amd'], 6 | ts: true, 7 | noStyle: true 8 | }), 9 | { 10 | rules: { 11 | 'no-console': 'warn' 12 | } 13 | } 14 | ]; 15 | -------------------------------------------------------------------------------- /dist/cjs/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const packageName = 'stylelint-config-astro'; 4 | const config = { 5 | extends: [`${packageName}/astro`, `${packageName}/vue`, `${packageName}/svelte`, `${packageName}/html`] 6 | }; 7 | exports.default = config; 8 | 9 | module.exports = exports.default; 10 | -------------------------------------------------------------------------------- /stylelint.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: ['stylelint-config-standard', 'stylelint-config-prettier'], 3 | rules: { 4 | 'no-invalid-position-at-import-rule': null, 5 | 'at-rule-no-unknown': [ 6 | true, 7 | { 8 | ignoreAtRules: ['tailwind', 'apply', 'layer', 'variants', 'responsive', 'screen'] 9 | } 10 | ] 11 | } 12 | }; 13 | -------------------------------------------------------------------------------- /dist/cjs/vue.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const vueExtensions = ['.vue']; 4 | const config = { 5 | overrides: [ 6 | { 7 | files: vueExtensions.flatMap((ext) => [`*${ext}`, `**/*${ext}`]), 8 | customSyntax: 'postcss-html' 9 | } 10 | ] 11 | }; 12 | exports.default = config; 13 | 14 | module.exports = exports.default; 15 | -------------------------------------------------------------------------------- /dist/cjs/astro.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const astroExtensions = ['.astro']; 4 | const config = { 5 | overrides: [ 6 | { 7 | files: astroExtensions.flatMap((ext) => [`*${ext}`, `**/*${ext}`]), 8 | customSyntax: 'postcss-html' 9 | } 10 | ] 11 | }; 12 | exports.default = config; 13 | 14 | module.exports = exports.default; 15 | -------------------------------------------------------------------------------- /dist/cjs/html.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const htmlExtensions = ['.html', '.htm']; 4 | const config = { 5 | overrides: [ 6 | { 7 | files: htmlExtensions.flatMap((ext) => [`*${ext}`, `**/*${ext}`]), 8 | customSyntax: 'postcss-html' 9 | } 10 | ] 11 | }; 12 | exports.default = config; 13 | 14 | module.exports = exports.default; 15 | -------------------------------------------------------------------------------- /dist/cjs/svelte.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const svelteExtensions = ['.svelte']; 4 | const config = { 5 | overrides: [ 6 | { 7 | files: svelteExtensions.flatMap((ext) => [`*${ext}`, `**/*${ext}`]), 8 | customSyntax: 'postcss-html' 9 | } 10 | ] 11 | }; 12 | exports.default = config; 13 | 14 | module.exports = exports.default; 15 | -------------------------------------------------------------------------------- /.versionrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | types: [ 3 | { type: 'build', hidden: true }, 4 | { type: 'chore', hidden: true }, 5 | { type: 'clean', hidden: true }, 6 | { type: 'edit', hidden: true }, 7 | { type: 'drop', section: 'Notices' }, 8 | { type: 'feat', section: 'Features' }, 9 | { type: 'fix', section: 'Fixes' }, 10 | { type: 'test', hidden: true } 11 | ], 12 | skip: { 13 | // "tag": true 14 | } 15 | }; 16 | -------------------------------------------------------------------------------- /.scripts/fix-cjs.cjs: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | const fs = require('node:fs'); 4 | const path = require('node:path'); 5 | 6 | const cjsDir = path.join(__dirname, '..', 'dist', 'cjs'); 7 | 8 | if (!fs.existsSync(cjsDir)) { 9 | process.exit(0); 10 | } 11 | 12 | for (const entry of fs.readdirSync(cjsDir)) { 13 | if (!entry.endsWith('.js')) continue; 14 | const filePath = path.join(cjsDir, entry); 15 | const content = fs.readFileSync(filePath, 'utf8'); 16 | if (content.includes('module.exports = exports.default')) continue; 17 | fs.writeFileSync(filePath, `${content}\nmodule.exports = exports.default;\n`, 'utf8'); 18 | } 19 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ### Dependencies & Artifacts ### 2 | 3 | node_modules/ 4 | 5 | ### Environment Variables ### 6 | 7 | .env 8 | .env.* 9 | !.env.example 10 | 11 | ### Log Files ### 12 | 13 | logs/ 14 | *_log 15 | *.log 16 | *.log* 17 | 18 | ### Archives ### 19 | 20 | *.7z 21 | *.dmg 22 | *.gz 23 | *.bz2 24 | *.iso 25 | *.jar 26 | *.rar 27 | *.tar 28 | *.zip 29 | *.tgz 30 | 31 | ### Tooling ### 32 | 33 | .husky/ 34 | .vscode/ 35 | *.sublime-project 36 | *.sublime-workspace 37 | .phpintel/ 38 | .atom/ 39 | .idea/ 40 | *.suo 41 | *.ntvs* 42 | *.njsproj 43 | *.sln 44 | *.sw? 45 | *.tsbuildinfo 46 | 47 | ### System Files ### 48 | 49 | .DS_Store* 50 | .AppleDouble 51 | .LSOverride 52 | ._* 53 | .Spotlight-V100 54 | .Trashes 55 | ehthumbs.db 56 | Thumbs.db 57 | *.un~ 58 | -------------------------------------------------------------------------------- /.scripts/next-version.cjs: -------------------------------------------------------------------------------- 1 | const recommendedBump = require('conventional-recommended-bump'); 2 | const semver = require('semver'); 3 | 4 | const packageJson = require('../package.json'); 5 | 6 | const getNextVersion = (currentVersion) => { 7 | return new Promise((resolve, reject) => { 8 | recommendedBump( 9 | { 10 | preset: 'angular' 11 | }, 12 | (e, release) => { 13 | if (e) { 14 | reject(e); 15 | return; 16 | } 17 | 18 | const nextVersion = 19 | semver.valid(release.releaseType) || 20 | semver.inc(currentVersion, release.releaseType); 21 | 22 | resolve(nextVersion); 23 | } 24 | ); 25 | }); 26 | }; 27 | 28 | getNextVersion(packageJson.version) 29 | .then((version) => console.log(version)) 30 | .catch((error) => console.log(error)); 31 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 - 2025 Matt Pfeffer 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and 6 | associated documentation files (the "Software"), to deal in the Software without restriction, 7 | including without limitation the rights to use, copy, modify, merge, publish, distribute, 8 | sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is 9 | furnished to do so, subject to the following conditions: 10 | 11 | The above copyright notice and this permission notice shall be included in all copies or substantial 12 | portions of the Software. 13 | 14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT 15 | NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 16 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES 17 | OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 18 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 19 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines. 4 | 5 | ## [2.0.0](https://github.com/mattpfeffer/stylelint-config-astro/compare/v1.0.4...v2.0.0) (2025-10-28) 6 | 7 | 8 | ### ⚠ BREAKING CHANGES 9 | 10 | * bump support to stylelint@16 and postcss-html@1.6 11 | 12 | ### Features 13 | 14 | * add support for both esm and commonjs import syntax ([264a60a](https://github.com/mattpfeffer/stylelint-config-astro/commit/264a60a5dc35deb6a51999139930bb5621e487df)) 15 | * bump support to stylelint@16 and postcss-html@1.6 ([76071a3](https://github.com/mattpfeffer/stylelint-config-astro/commit/76071a30d220bd017d8e28102eca91e34e12ad10)) 16 | 17 | 18 | ### Fixes 19 | 20 | * correct extension for vue files ([634d620](https://github.com/mattpfeffer/stylelint-config-astro/commit/634d620a43bf1f0a0765c712530fa8bf092459c3)) 21 | 22 | ### [1.0.4](https://github.com/mattpfeffer/stylelint-config-astro/compare/v1.0.3...v1.0.4) (2022-07-05) 23 | 24 | ### 1.0.3 (2022-06-28) 25 | 26 | ### 1.0.2 (2022-06-28) 27 | -------------------------------------------------------------------------------- /commitlint.config.js: -------------------------------------------------------------------------------- 1 | /* 2 | * --- CONFIGURATION --- 3 | * 4 | * Prior to fist use, the following commands must be run: 5 | * 6 | * pnpm husky init && rm .husky/pre-commit 7 | * echo 'pnpm commitlint --edit $1' > .husky/commit-msg 8 | * 9 | */ 10 | 11 | module.exports = { 12 | extends: ['@commitlint/config-conventional'], 13 | rules: { 14 | 'type-enum': [ 15 | 2, 16 | 'always', 17 | ['build', 'chore', 'clean', 'drop', 'edit', 'feat', 'fix', 'test'] 18 | ] 19 | } 20 | }; 21 | 22 | /* 23 | * --- CHEAT SHEET --- 24 | * 25 | * Format: 26 | * (): 27 | * 28 | * Types: 29 | * - build: Changes that affect the build system, continuous integration etc 30 | * - chore: Other changes that don't modify src or test files 31 | * - clean: Refactoring code, formatting, removing commented code etc 32 | * - drop: Deprecation notices for end users or feature removals 33 | * - feat: A new feature 34 | * - fix: A bug fix, security patch or performance improvements 35 | * - test: Adding missing tests or reconfiguring existing ones 36 | * - edit: Editing content (static sites) or documentation like readmes and licenses 37 | * 38 | * Scopes: 39 | * In monorepos, the scope should be set to the name of the package affected. Otherwise, it should 40 | * be omitted. 41 | * 42 | * Subject: 43 | * A succinct description of the change. 44 | * - Use the imperative, present tense: "change" not "changed" nor "changes" 45 | * - Don't capitalize the first letter 46 | * - No dot (.) at the end 47 | * 48 | * Description (optional): 49 | * When the commit needs extra context or information. 50 | * - Use the imperative, present tense: "change" not "changed" nor "changes" 51 | * - Sentence case 52 | * 53 | * Breaking changes: 54 | * All breaking changes have to be mentioned following the description. 55 | * - Start with the words BREAKING CHANGE: followed by space or two newlines 56 | * - The rest of the commit message is used to describe those changes 57 | * 58 | * Reverting a commit: 59 | * Reverts should be avoided if possible, but when required, the commit should begin with "revert:", 60 | * followed by the header of the reverted commit. For example: 61 | * revert: (): 62 | */ 63 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # stylelint-config-astro 2 | 3 | A shareable Stylelint config for linting Astro (`.astro`) files :rocket: 4 | 5 | ## The low down 6 | 7 | This config bundles [postcss-html] and configures it to parse .astro files so you can use Stylelint 8 | on the `` section within those components. 9 | 10 | ## Minimum Requirements 11 | 12 | From v2, this package is compatible with the following peer dependencies: 13 | 14 | - [stylelint] v16.0.0 and above 15 | - [postcss-html] v1.6.0 and above 16 | 17 | ## Installation 18 | 19 | ```sh 20 | # Using npm 21 | npm install --save-dev postcss-html stylelint-config-astro 22 | 23 | # Using yarn 24 | yarn add --dev postcss-html stylelint-config-astro 25 | 26 | # Using pnpm 27 | pnpm add --save-dev postcss-html stylelint-config-astro 28 | ``` 29 | 30 | ## Usage 31 | 32 | Append to the [`extends` array](https://stylelint.io/user-guide/configure/#extends) in your 33 | `stylelint.config.js` or equivalent. It's usually best placed **after** your other rulesets. 34 | 35 | ```jsonc 36 | { 37 | "extends": [ 38 | // other configs ... 39 | "stylelint-config-astro" 40 | ] 41 | } 42 | ``` 43 | 44 | ## Integrations 45 | 46 | ### Visual Studio Code 47 | 48 | Use the official 49 | [stylelint.vscode-stylelint](https://marketplace.visualstudio.com/items?itemName=stylelint.vscode-stylelint) 50 | extension. 51 | 52 | Add the `.astro` file extension to `stylelint.validate` under settings to enable linting for Astro 53 | files. It's also a good idea to add `.html`, `.vue`, `.svelte`, etc. if you're working in a mixed project - this package adds basic support for those file types as well. 54 | 55 | **.vscode/settings.json**: 56 | 57 | ```jsonc 58 | { 59 | "stylelint.validate": [ 60 | "html", 61 | "vue", 62 | "svelte", 63 | // other file extensions... 64 | "astro" 65 | ] 66 | } 67 | ``` 68 | 69 | ## Credits 70 | 71 | Although this package is not a direct fork it heavily leverages the the work of 72 | [@ota-meshi](https://github.com/ota-meshi) in 73 | [stylelint-config-html](https://github.com/ota-meshi/stylelint-config-html). 74 | 75 | [stylelint]: https://stylelint.io/ 76 | [postcss-html]: https://github.com/ota-meshi/postcss-html 77 | 78 | _Note: At the time of development, stylelint-config-html did not support Astro files natively. It now does, so you may want to consider using that package instead if you want support for a broader set of file types._ 79 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "stylelint-config-astro", 3 | "version": "2.0.0", 4 | "description": "A shareable Stylelint config for linting Astro files.", 5 | "author": "Matt Pfeffer (https://github.com/mattpfeffer)", 6 | "license": "MIT", 7 | "repository": { 8 | "type": "git", 9 | "url": "git+https://github.com/mattpfeffer/stylelint-config-astro.git" 10 | }, 11 | "keywords": [ 12 | "stylelint", 13 | "config", 14 | "stylelint-config", 15 | "astro" 16 | ], 17 | "main": "dist/cjs/index.js", 18 | "module": "dist/esm/index.js", 19 | "exports": { 20 | ".": { 21 | "import": "./dist/esm/index.js", 22 | "require": "./dist/cjs/index.js", 23 | "default": "./dist/esm/index.js" 24 | }, 25 | "./astro": { 26 | "import": "./dist/esm/astro.js", 27 | "require": "./dist/cjs/astro.js", 28 | "default": "./dist/esm/astro.js" 29 | }, 30 | "./vue": { 31 | "import": "./dist/esm/vue.js", 32 | "require": "./dist/cjs/vue.js", 33 | "default": "./dist/esm/vue.js" 34 | }, 35 | "./svelte": { 36 | "import": "./dist/esm/svelte.js", 37 | "require": "./dist/cjs/svelte.js", 38 | "default": "./dist/esm/svelte.js" 39 | }, 40 | "./html": { 41 | "import": "./dist/esm/html.js", 42 | "require": "./dist/cjs/html.js", 43 | "default": "./dist/esm/html.js" 44 | } 45 | }, 46 | "files": [ 47 | "dist/" 48 | ], 49 | "scripts": { 50 | "clean": "node -e \"require('fs').rmSync('dist', { recursive: true, force: true });\"", 51 | "build": "pnpm run clean && tsc -p tsconfig.esm.json && tsc -p tsconfig.cjs.json && node ./.scripts/fix-cjs.cjs", 52 | "types": "tsc -p tsconfig.json -w", 53 | "next": "node ./.scripts/next-version.cjs", 54 | "release": "commit-and-tag-version", 55 | "prepare": "husky" 56 | }, 57 | "devDependencies": { 58 | "@commitlint/cli": "^20.1.0", 59 | "@commitlint/config-conventional": "^20.0.0", 60 | "@types/node": "^24.9.1", 61 | "@typescript-eslint/eslint-plugin": "^8.46.2", 62 | "@typescript-eslint/parser": "^8.46.2", 63 | "commit-and-tag-version": "^12.6.0", 64 | "conventional-recommended-bump": "^11.2.0", 65 | "eslint": "^9.38.0", 66 | "eslint-config-prettier": "^10.1.8", 67 | "eslint-plugin-import": "^2.32.0", 68 | "eslint-plugin-n": "^17.23.1", 69 | "eslint-plugin-promise": "^7.2.1", 70 | "husky": "^9.1.7", 71 | "neostandard": "^0.12.2", 72 | "prettier": "^3.6.2", 73 | "semver": "^7.7.3", 74 | "stylelint": "^14.16.1", 75 | "stylelint-config-standard": "^26.0.0" 76 | }, 77 | "peerDependencies": { 78 | "postcss-html": "^1.0.0", 79 | "stylelint": ">=14.0.0" 80 | }, 81 | "dependencies": { 82 | "typescript": "^5.9.3" 83 | }, 84 | "packageManager": "pnpm@10.19.0" 85 | } 86 | --------------------------------------------------------------------------------