mirror of
https://github.com/Stirling-Tools/Stirling-PDF.git
synced 2025-07-25 22:55:22 +00:00
chore: add integrate Stylelint for CSS linting (#3909)
# Description of Changes **What was changed** - Added a new `.stylelintrc.json` to configure Stylelint with `stylelint-config-standard` and custom ignore rules. - Created a `lint:css` script in `package.json` and added `stylelint`/`stylelint-config-standard` to `devDependencies`. - Added `package-lock.json` to lock dependencies. - Updated numerous CSS files under `stirling-pdf/src/main/resources/static/css/` to fix lint errors (shorthand properties, removed redundant units, consistent box-shadow syntax, margin shorthand, etc.). **Why the change was made** - To enforce consistent, modern CSS code style across the project, catch errors early, and enable automated fixing of common lint issues. --- ## Checklist ### General - [x] I have read the [Contribution Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md) - [x] I have read the [Stirling-PDF Developer Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/DeveloperGuide.md) (if applicable) - [ ] I have read the [How to add new languages to Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md) (if applicable) - [x] I have performed a self-review of my own code - [x] My changes generate no new warnings ### Documentation - [ ] I have updated relevant docs on [Stirling-PDF's doc repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/) (if functionality has heavily changed) - [ ] I have read the section [Add New Translation Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md#add-new-translation-tags) (for new translation tags only) ### UI Changes (if applicable) - [ ] Screenshots or videos demonstrating the UI changes are attached (e.g., as comments or direct attachments in the PR) ### Testing (if applicable) - [ ] I have tested my changes locally. Refer to the [Testing Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/DeveloperGuide.md#6-testing) for more details.
This commit is contained in:
parent
8ba7cfe921
commit
626734c781
@ -119,7 +119,9 @@
|
|||||||
"EditorConfig.EditorConfig", // EditorConfig support for maintaining consistent coding styles
|
"EditorConfig.EditorConfig", // EditorConfig support for maintaining consistent coding styles
|
||||||
"ms-azuretools.vscode-docker", // Docker extension for Visual Studio Code
|
"ms-azuretools.vscode-docker", // Docker extension for Visual Studio Code
|
||||||
"charliermarsh.ruff", // Ruff extension for Ruff language support
|
"charliermarsh.ruff", // Ruff extension for Ruff language support
|
||||||
"github.vscode-github-actions" // GitHub Actions extension for Visual Studio Code
|
"github.vscode-github-actions", // GitHub Actions extension for Visual Studio Code
|
||||||
|
"stylelint.vscode-stylelint", // Stylelint extension for CSS and SCSS linting
|
||||||
|
"redhat.vscode-yaml" // YAML extension for Visual Studio Code
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
1
.github/labeler-config-srvaroa.yml
vendored
1
.github/labeler-config-srvaroa.yml
vendored
@ -126,6 +126,7 @@ labels:
|
|||||||
- '.pre-commit-config'
|
- '.pre-commit-config'
|
||||||
- '.github/workflows/pre_commit.yml'
|
- '.github/workflows/pre_commit.yml'
|
||||||
- 'devGuide/.*'
|
- 'devGuide/.*'
|
||||||
|
- 'devTools/.*'
|
||||||
|
|
||||||
- label: 'Test'
|
- label: 'Test'
|
||||||
files:
|
files:
|
||||||
|
2
.vscode/extensions.json
vendored
2
.vscode/extensions.json
vendored
@ -17,5 +17,7 @@
|
|||||||
"GitHub.vscode-pull-request-github", // GitHub Pull Requests extension for Visual Studio Code
|
"GitHub.vscode-pull-request-github", // GitHub Pull Requests extension for Visual Studio Code
|
||||||
"charliermarsh.ruff", // Ruff code formatter for Python to follow the Ruff Style Guide
|
"charliermarsh.ruff", // Ruff code formatter for Python to follow the Ruff Style Guide
|
||||||
"yzhang.markdown-all-in-one", // Markdown All-in-One extension for enhanced Markdown editing
|
"yzhang.markdown-all-in-one", // Markdown All-in-One extension for enhanced Markdown editing
|
||||||
|
"stylelint.vscode-stylelint", // Stylelint extension for CSS and SCSS linting
|
||||||
|
"redhat.vscode-yaml", // YAML extension for Visual Studio Code
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
7
.vscode/settings.json
vendored
7
.vscode/settings.json
vendored
@ -9,6 +9,9 @@
|
|||||||
"[jsonc]": {
|
"[jsonc]": {
|
||||||
"editor.defaultFormatter": "vscode.json-language-features"
|
"editor.defaultFormatter": "vscode.json-language-features"
|
||||||
},
|
},
|
||||||
|
"[css]": {
|
||||||
|
"editor.defaultFormatter": "stylelint.vscode-stylelint"
|
||||||
|
},
|
||||||
"[json]": {
|
"[json]": {
|
||||||
"editor.defaultFormatter": "vscode.json-language-features"
|
"editor.defaultFormatter": "vscode.json-language-features"
|
||||||
},
|
},
|
||||||
@ -27,6 +30,9 @@
|
|||||||
"[gradle]": {
|
"[gradle]": {
|
||||||
"editor.defaultFormatter": "vscjava.vscode-gradle"
|
"editor.defaultFormatter": "vscjava.vscode-gradle"
|
||||||
},
|
},
|
||||||
|
"[yaml]": {
|
||||||
|
"editor.defaultFormatter": "redhat.vscode-yaml"
|
||||||
|
},
|
||||||
"java.compile.nullAnalysis.mode": "automatic",
|
"java.compile.nullAnalysis.mode": "automatic",
|
||||||
"java.configuration.updateBuildConfiguration": "interactive",
|
"java.configuration.updateBuildConfiguration": "interactive",
|
||||||
"java.format.enabled": true,
|
"java.format.enabled": true,
|
||||||
@ -119,6 +125,7 @@
|
|||||||
"html.format.indentHandlebars": true,
|
"html.format.indentHandlebars": true,
|
||||||
"html.format.preserveNewLines": true,
|
"html.format.preserveNewLines": true,
|
||||||
"html.format.maxPreserveNewLines": 2,
|
"html.format.maxPreserveNewLines": 2,
|
||||||
|
"stylelint.configFile": "devTools/.stylelintrc.json",
|
||||||
"java.project.sourcePaths": [
|
"java.project.sourcePaths": [
|
||||||
"stirling-pdf/src/main/java",
|
"stirling-pdf/src/main/java",
|
||||||
"common/src/main/java",
|
"common/src/main/java",
|
||||||
|
47
devGuide/STYLELINT.md
Normal file
47
devGuide/STYLELINT.md
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
# STYLELINT.md
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
Apply Stylelint to your project's CSS with the following steps:
|
||||||
|
|
||||||
|
1. **NPM Script**
|
||||||
|
|
||||||
|
- Go to directory: `devTools/`
|
||||||
|
|
||||||
|
- Add Stylelint & stylistic/stylelint-plugin
|
||||||
|
```bash
|
||||||
|
npm install --save-dev stylelint stylelint-config-standard
|
||||||
|
npm install --save-dev @stylistic/stylelint-plugin
|
||||||
|
```
|
||||||
|
- Add a script entry to your `package.json`:
|
||||||
|
```jsonc
|
||||||
|
{
|
||||||
|
"scripts": {
|
||||||
|
"lint:css:check": "stylelint \"../stirling-pdf/src/main/**/*.css\" \"../proprietary/src/main/resources/static/css/*.css\" --config .stylelintrc.json",
|
||||||
|
"lint:css:fix": "stylelint \"../stirling-pdf/src/main/**/*.css\" \"../proprietary/src/main/resources/static/css/*.css\" --config .stylelintrc.json --fix"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
- Run the linter:
|
||||||
|
```bash
|
||||||
|
npm run lint:css:check
|
||||||
|
npm run lint:css:fix
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **CLI Usage**
|
||||||
|
|
||||||
|
- Lint all CSS files:
|
||||||
|
```bash
|
||||||
|
npx stylelint ../stirling-pdf/src/main/**/*.css ../proprietary/src/main/resources/static/css/*.css
|
||||||
|
```
|
||||||
|
- Lint a single file:
|
||||||
|
```bash
|
||||||
|
npx stylelint ../proprietary/src/main/resources/static/css/audit-dashboard.css
|
||||||
|
```
|
||||||
|
- Apply automatic fixes:
|
||||||
|
```bash
|
||||||
|
npx stylelint "../stirling-pdf/src/main/**/*.css" "../proprietary/src/main/resources/static/css/*.css" --fix
|
||||||
|
```
|
||||||
|
|
||||||
|
For full configuration options and rule customization, refer to the official documentation: [https://stylelint.io](https://stylelint.io)
|
||||||
|
|
69
devTools/.stylelintrc.json
Normal file
69
devTools/.stylelintrc.json
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
{
|
||||||
|
"extends": [
|
||||||
|
"stylelint-config-standard"
|
||||||
|
],
|
||||||
|
"plugins": [
|
||||||
|
"@stylistic/stylelint-plugin"
|
||||||
|
],
|
||||||
|
"ignoreFiles": [
|
||||||
|
"stirling-pdf/src/main/resources/static/css/bootstrap*.css",
|
||||||
|
"stirling-pdf/src/main/resources/static/css/cookieconsent.css",
|
||||||
|
"stirling-pdf/src/main/resources/static/css/cookieconsentCustomisation.css",
|
||||||
|
"stirling-pdf/src/main/resources/static/css/prism.css",
|
||||||
|
"stirling-pdf/src/main/resources/static/pdfjs-legacy/**/*.css"
|
||||||
|
],
|
||||||
|
"rules": {
|
||||||
|
"property-no-vendor-prefix": null,
|
||||||
|
"value-no-vendor-prefix": null,
|
||||||
|
"selector-no-vendor-prefix": null,
|
||||||
|
"media-feature-name-no-vendor-prefix": null,
|
||||||
|
"value-keyword-case": null,
|
||||||
|
"color-function-notation": null,
|
||||||
|
"alpha-value-notation": null,
|
||||||
|
"color-function-alias-notation": null,
|
||||||
|
"selector-class-pattern": null,
|
||||||
|
"selector-id-pattern": null,
|
||||||
|
"declaration-block-no-redundant-longhand-properties": null,
|
||||||
|
"media-feature-range-notation": "prefix",
|
||||||
|
"selector-attribute-quotes": null,
|
||||||
|
"at-rule-no-vendor-prefix": null,
|
||||||
|
"selector-not-notation": null,
|
||||||
|
"no-duplicate-selectors": [
|
||||||
|
true,
|
||||||
|
{
|
||||||
|
"disableFix": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"comment-word-disallowed-list": null,
|
||||||
|
"custom-property-pattern": null,
|
||||||
|
"no-descending-specificity": null,
|
||||||
|
"keyframes-name-pattern": null,
|
||||||
|
"comment-empty-line-before": [
|
||||||
|
"always",
|
||||||
|
{
|
||||||
|
"ignore": [
|
||||||
|
"stylelint-commands"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"block-no-empty": true,
|
||||||
|
"@stylistic/declaration-bang-space-after": "never",
|
||||||
|
"@stylistic/declaration-bang-space-before": "always",
|
||||||
|
"@stylistic/declaration-block-trailing-semicolon": "always",
|
||||||
|
"@stylistic/function-comma-space-after": [
|
||||||
|
"always-single-line",
|
||||||
|
{
|
||||||
|
"disableFix": false
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"@stylistic/function-comma-space-before": "never",
|
||||||
|
"@stylistic/color-hex-case": "lower",
|
||||||
|
"@stylistic/declaration-block-semicolon-newline-after": "always",
|
||||||
|
"@stylistic/indentation": [
|
||||||
|
2,
|
||||||
|
{
|
||||||
|
"baseIndentLevel": 2
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
1598
devTools/package-lock.json
generated
Normal file
1598
devTools/package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
13
devTools/package.json
Normal file
13
devTools/package.json
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
"name": "stirling-pdf",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"scripts": {
|
||||||
|
"lint:css:check": "stylelint \"../stirling-pdf/src/main/**/*.css\" \"../proprietary/src/main/resources/static/css/*.css\" --config .stylelintrc.json",
|
||||||
|
"lint:css:fix": "stylelint \"../stirling-pdf/src/main/**/*.css\" \"../proprietary/src/main/resources/static/css/*.css\" --config .stylelintrc.json --fix"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@stylistic/stylelint-plugin": "^3.1.3",
|
||||||
|
"stylelint": "^16.21.1",
|
||||||
|
"stylelint-config-standard": "^38.0.0"
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user