Skip to content

Commit 0167c22

Browse files
authored
Merge pull request #230 from ckeditor/epic/ck/18475-eslint9
Other: The repository now uses ESLint v9. Therefore, the required Node.js version has been upgraded to 22 to match the ESLint requirements. BREAKING CHANGE: Updated the required version of Node.js to 22.
2 parents 689d36d + 9f1bece commit 0167c22

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+2037
-1520
lines changed

.eslintrc.cjs

Lines changed: 0 additions & 28 deletions
This file was deleted.

eslint.config.js

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
/**
2+
* @license Copyright (c) 2020-2025, CKSource Holding sp. z o.o. All rights reserved.
3+
* For licensing, see LICENSE.md.
4+
*/
5+
6+
import globals from 'globals';
7+
import { defineConfig } from 'eslint/config';
8+
import eslintConfigCKEditor5 from 'eslint-config-ckeditor5';
9+
import eslintPluginCKEditor5Rules from 'eslint-plugin-ckeditor5-rules';
10+
11+
export default defineConfig( [
12+
eslintConfigCKEditor5,
13+
{
14+
name: 'Ignored files config',
15+
ignores: [
16+
'coverage/**'
17+
]
18+
},
19+
{
20+
name: 'Base config',
21+
languageOptions: {
22+
ecmaVersion: 'latest',
23+
sourceType: 'module',
24+
globals: {
25+
...globals.node
26+
}
27+
},
28+
linterOptions: {
29+
reportUnusedInlineConfigs: 'error',
30+
reportUnusedDisableDirectives: 'error'
31+
},
32+
plugins: {
33+
'ckeditor5-rules': eslintPluginCKEditor5Rules
34+
},
35+
rules: {
36+
'no-console': 'off',
37+
'ckeditor5-rules/license-header': [ 'error', { headerLines: [
38+
'/**',
39+
' * @license Copyright (c) 2020-2025, CKSource Holding sp. z o.o. All rights reserved.',
40+
' * For licensing, see LICENSE.md.',
41+
' */'
42+
] } ],
43+
'ckeditor5-rules/require-file-extensions-in-imports': [ 'error', {
44+
extensions: [ '.ts', '.js', '.json' ]
45+
} ]
46+
}
47+
},
48+
{
49+
name: 'Templates config',
50+
files: [ './packages/ckeditor5-package-generator/lib/templates/**/*.{js,cjs,ts}' ],
51+
rules: {
52+
'ckeditor5-rules/license-header': 'off'
53+
}
54+
}
55+
] );

package.json

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -18,31 +18,36 @@
1818
"homepage": "https://ckeditor.com/ckeditor-5",
1919
"type": "module",
2020
"devDependencies": {
21-
"@ckeditor/ckeditor5-dev-bump-year": "^48.0.0",
22-
"@ckeditor/ckeditor5-dev-ci": "^48.0.0",
23-
"@ckeditor/ckeditor5-dev-release-tools": "^48.0.0",
24-
"@ckeditor/ckeditor5-dev-web-crawler": "^48.0.0",
25-
"@vitest/coverage-v8": "^2.1.1",
21+
"@ckeditor/ckeditor5-dev-bump-year": "^49.0.0",
22+
"@ckeditor/ckeditor5-dev-ci": "^49.0.0",
23+
"@ckeditor/ckeditor5-dev-release-tools": "^49.0.0",
24+
"@ckeditor/ckeditor5-dev-web-crawler": "^49.0.0",
25+
"@vitest/coverage-v8": "^3.0.0",
2626
"chalk": "^5.0.0",
2727
"coveralls": "^3.1.1",
28-
"eslint": "^7.32.0",
29-
"eslint-config-ckeditor5": "^6.0.0",
28+
"eslint": "^9.27.0",
29+
"eslint-config-ckeditor5": "^10.0.0",
30+
"eslint-plugin-ckeditor5-rules": "^10.0.0",
3031
"fs-extra": "^11.2.0",
3132
"glob": "^10.2.5",
33+
"globals": "^16.1.0",
3234
"husky": "^8.0.2",
3335
"lint-staged": "^10.5.4",
3436
"minimist": "^1.2.8",
3537
"semver": "^7.0.0",
3638
"upath": "^2.0.1",
37-
"vitest": "^2.1.9"
39+
"vitest": "^3.0.0"
40+
},
41+
"resolutions": {
42+
"string-width": "^4.0.0"
3843
},
3944
"engines": {
40-
"node": ">=20.0.0"
45+
"node": ">=22.0.0"
4146
},
4247
"scripts": {
4348
"postinstall": "node ./scripts/postinstall.js",
4449
"changelog": "node scripts/release/changelog.js",
45-
"lint": "eslint --quiet \"**/*.js\"",
50+
"lint": "eslint",
4651
"precommit": "lint-staged",
4752
"release:prepare-packages": "node scripts/release/preparepackages.js",
4853
"release:publish-packages": "node scripts/release/publishpackages.js",
@@ -56,14 +61,10 @@
5661
"url": "https://github.com/ckeditor/ckeditor5-package-generator.git"
5762
},
5863
"lint-staged": {
59-
"**/*.js": [
60-
"eslint --quiet"
64+
"**/*": [
65+
"eslint"
6166
]
6267
},
63-
"eslintIgnore": [
64-
"coverage/**",
65-
"packages/*/node_modules/**"
66-
],
6768
"workspaces": {
6869
"packages": [
6970
"packages/*"

packages/ckeditor5-package-generator/lib/templates/js-legacy/.eslintrc.cjs

Lines changed: 0 additions & 41 deletions
This file was deleted.
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
import globals from 'globals';
2+
import { defineConfig } from 'eslint/config';
3+
import eslintConfigCKEditor5 from 'eslint-config-ckeditor5';
4+
import eslintPluginCKEditor5Rules from 'eslint-plugin-ckeditor5-rules';
5+
6+
export default defineConfig( [
7+
eslintConfigCKEditor5,
8+
{
9+
name: 'Ignored files config',
10+
ignores: [
11+
// Ignore the entire `dist/`.
12+
'dist/**',
13+
// Ignore the entire `build/` (the DLL build).
14+
'build/**'
15+
]
16+
},
17+
{
18+
name: 'Base config',
19+
languageOptions: {
20+
ecmaVersion: 'latest',
21+
sourceType: 'module'
22+
},
23+
linterOptions: {
24+
reportUnusedInlineConfigs: 'error',
25+
reportUnusedDisableDirectives: 'error'
26+
},
27+
plugins: {
28+
'ckeditor5-rules': eslintPluginCKEditor5Rules
29+
},
30+
rules: {
31+
// This rule disallows importing from any path other than the package main entrypoint.
32+
'ckeditor5-rules/allow-imports-only-from-main-package-entry-point': 'error',
33+
// As required by the ECMAScript (ESM) standard, all imports must include a file extension.
34+
// If the import does not include it, this rule will try to automatically detect the correct file extension.
35+
'ckeditor5-rules/require-file-extensions-in-imports': [ 'error', {
36+
extensions: [ '.ts', '.js', '.json' ]
37+
} ],
38+
// This rule disallows importing core DLL packages directly. Imports should be done using the `ckeditor5` package.
39+
// Also, importing non-DLL packages is not allowed. If the package requires other features to work, they should be
40+
// specified as soft-requirements.
41+
// Read more: https://ckeditor.com/docs/ckeditor5/latest/builds/guides/migration/migration-to-26.html#soft-requirements.
42+
'ckeditor5-rules/ckeditor-imports': 'error'
43+
}
44+
},
45+
{
46+
name: 'NodeJS environment config',
47+
files: [
48+
'./scripts/**/*.{js,mjs,cjs}'
49+
],
50+
languageOptions: {
51+
globals: {
52+
...globals.node
53+
}
54+
}
55+
},
56+
{
57+
name: 'Browser environment config',
58+
files: [
59+
'./sample/**/*.{js,mjs,cjs}',
60+
'./src/**/*.{js,mjs,cjs}',
61+
'./tests/**/*.{js,mjs,cjs}'
62+
],
63+
languageOptions: {
64+
globals: {
65+
...globals.browser
66+
}
67+
}
68+
},
69+
{
70+
name: 'Sample and tests config',
71+
files: [
72+
'sample/**/*.{js,mjs,cjs}',
73+
'tests/**/*.{js,mjs,cjs}'
74+
],
75+
rules: {
76+
// To write complex tests, you may need to import files that are not exported in DLL files by default.
77+
// Hence, imports CKEditor 5 packages in test files are not checked.
78+
'ckeditor5-rules/ckeditor-imports': 'off'
79+
}
80+
}
81+
] );

packages/ckeditor5-package-generator/lib/templates/js-legacy/package.json

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,6 @@
2323
"./package.json": "./package.json"
2424
},
2525
"license": "MIT",
26-
"engines": {
27-
"node": ">=20.0.0",
28-
"npm": ">=5.7.1"
29-
},
3026
"files": [
3127
"dist",
3228
"lang",
@@ -37,18 +33,20 @@
3733
],
3834
"devDependencies": {
3935
"@ckeditor/ckeditor5-dev-build-tools": "<%= packageVersions.ckeditor5DevBuildTools %>",
40-
"@ckeditor/ckeditor5-inspector": ">=<%= packageVersions.ckeditor5Inspector %>",
36+
"@ckeditor/ckeditor5-inspector": "^<%= packageVersions.ckeditor5Inspector %>",
4137
"@ckeditor/ckeditor5-package-tools": "<%= packageVersions.packageTools %>",
4238
"@vitest/coverage-istanbul": "^2.0.5",
4339
"@vitest/browser": "^2.0.5",
4440
"ckeditor5": "latest",
45-
"eslint": "^7.32.0",
46-
"eslint-config-ckeditor5": ">=<%= packageVersions.eslintConfigCkeditor5 %>",
41+
"eslint": "^9.27.0",
42+
"eslint-config-ckeditor5": "^<%= packageVersions.eslintConfigCkeditor5 %>",
43+
"eslint-plugin-ckeditor5-rules": "^<%= packageVersions.eslintPluginCkeditor5Rules %>",
44+
"globals": "^16.1.0",
4745
"http-server": "^14.1.0",
4846
"husky": "^4.2.5",
4947
"lint-staged": "^10.2.6",
5048
"stylelint": "^13.13.1",
51-
"stylelint-config-ckeditor5": ">=<%= packageVersions.stylelintConfigCkeditor5 %>",
49+
"stylelint-config-ckeditor5": "^<%= packageVersions.stylelintConfigCkeditor5 %>",
5250
"vite-plugin-svgo": "~1.4.0",
5351
"vitest": "^2.0.5",
5452
"webdriverio": "^9.0.7"
@@ -60,7 +58,7 @@
6058
"build:dist": "node ./scripts/build-dist.mjs",
6159
"dll:build": "ckeditor5-package-tools dll:build",
6260
"dll:serve": "http-server ./ -o sample/dll.html",
63-
"lint": "eslint \"**/*.js\" --quiet",
61+
"lint": "eslint",
6462
"start": "ckeditor5-package-tools start",
6563
"stylelint": "stylelint --quiet --allow-empty-input 'theme/**/*.css'",
6664
"test": "vitest",
@@ -70,8 +68,8 @@
7068
"translations:validate": "ckeditor5-package-tools translations:synchronize --validate-only"
7169
},
7270
"lint-staged": {
73-
"**/*.js": [
74-
"eslint --quiet"
71+
"**/*": [
72+
"eslint"
7573
],
7674
"**/*.css": [
7775
"stylelint --quiet --allow-empty-input"

packages/ckeditor5-package-generator/lib/templates/js-legacy/sample/ckeditor.js.txt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,6 @@ import { Base64UploadAdapter } from '@ckeditor/ckeditor5-upload';
1919

2020
import <%= formattedNames.plugin.pascalCase %> from '../src/<%= formattedNames.plugin.lowerCaseMerged %>.js';
2121

22-
/* global document, window */
23-
2422
ClassicEditor
2523
.create( document.querySelector( '#editor' ), {
2624
licenseKey: 'GPL',

packages/ckeditor5-package-generator/lib/templates/js-legacy/scripts/build-dist.mjs.txt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@
55
* For licensing, see LICENSE.md.
66
*/
77

8-
/* eslint-env node */
9-
108
import { createRequire } from 'module';
119
import upath from 'upath';
1210
import chalk from 'chalk';

packages/ckeditor5-package-generator/lib/templates/js-legacy/tests/_PLACEHOLDER_.js.txt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@ import { Heading } from '@ckeditor/ckeditor5-heading';
55
import { ClassicEditor } from '@ckeditor/ckeditor5-editor-classic';
66
import <%= formattedNames.plugin.pascalCase %> from '../src/<%= formattedNames.plugin.lowerCaseMerged %>.js';
77

8-
/* global document */
9-
108
describe( '<%= formattedNames.plugin.pascalCase %>', () => {
119
it( 'should be named', () => {
1210
expect( <%= formattedNames.plugin.pascalCase %>.pluginName ).to.equal( '<%= formattedNames.plugin.pascalCase %>' );

packages/ckeditor5-package-generator/lib/templates/js/.eslintrc.cjs

Lines changed: 0 additions & 37 deletions
This file was deleted.

0 commit comments

Comments
 (0)