Skip to content

Latest commit

 

History

History
160 lines (104 loc) · 4.61 KB

migration.md

File metadata and controls

160 lines (104 loc) · 4.61 KB

Migration Guide

From eslint-plugin-svelte3

You can not use both eslint-plugin-svelte3 and eslint-plugin-svelte at same time. So before start to use this plugin, you need to remove eslint-plugin-svelte3's stuff from both package.json and .eslintrc.*.

Note: If you want to know difference between eslint-plugin-svelte and eslint-plugin-svelte3, Please read the reason for deprecating eslint-plugin-svelte3 in eslint-plugin-svelte3 README.

Note: If you're using TypeScript, maybe you get Parsing error: "parserOptions.project" has been set for @typescript-eslint/parser. error at some configuration files.
In this case, please refer this GitHub comment to solve it.

From eslint-plugin-svelte v1 To v2

eslint-plugin-svelte v1 was an alias for eslint-plugin-svelte3, but eslint-plugin-svelte v2 is now an independent eslint-plugin.

If you want the previous behavior, replace it with eslint-plugin-svelte3.

From @ota-meshi/eslint-plugin-svelte

@ota-meshi/eslint-plugin-svelte has been renamed to eslint-plugin-svelte.
Therefore, you need to replace the package name, and the presets, rules, and settings specified in the configuration.

  • package.json
    Replace the package name.

    -  "@ota-meshi/eslint-plugin-svelte": "^0.X.X"
    +  "eslint-plugin-svelte": "^X.X.X"
  • .eslintrc.*
    Replace @ota-meshi/svelte with svelte as a string.
    Examples:

    • Presets

        "extends": [
      -    "plugin:@ota-meshi/svelte/recommended"
      +    "plugin:svelte/recommended"
        ],
    • Rules

        "rules": {
      -    "@ota-meshi/svelte/no-dupe-else-if-blocks": "error",
      +    "svelte/no-dupe-else-if-blocks": "error",
      -    "@ota-meshi/svelte/button-has-type": "error",
      +    "svelte/button-has-type": "error",
        },
    • settings

        "settings": {
      -    "@ota-meshi/svelte": { ... }
      +    "svelte": { ... }
        },

From eslint-plugin-svelte v2 To v3

This section explains the necessary changes when upgrading from eslint-plugin-svelte v2 to v3.
v3 includes support for ESLint Flat Config only, changes to the recommended rule set, and other breaking changes.


Breaking Changes

1. Minimum Node.js Version Requirement

v3 requires one of the following Node.js versions:

  • ^18.20.4
  • ^20.18.0
  • >=22.10.0

2. ESLint Flat Config Only

  • .eslintrc.js and .eslintrc.json are no longer supported.
  • You must use Flat Config (eslint.config.js).
  • See README for more details.

3. ESLint Version Requirement

  • v3 requires ESLint 8.57.1 or later (including v9.x).

4. Changes to Recommended Rule Set

  • The following rules are now included in recommended:
    • svelte/infinite-reactive-loop
    • svelte/no-dom-manipulating
    • svelte/no-dupe-on-directives
    • svelte/no-reactive-reassign
    • svelte/require-event-dispatcher-types
    • Many others (See Changelog for more details)
  • svelte/valid-compile has been removed from recommended.

5. Deprecated Rules

  • svelte/no-dynamic-slot-name is deprecated.
  • svelte/no-goto-without-base is deprecated and replaced with svelte/no-navigation-without-base.

New Features & Improvements

1. Support for Svelte 5

  • Rules such as no-not-function-handler and valid-prop-names-in-kit-pages now support Svelte 5.

2. New Rules

  • consistent-selector-style: Enforce consistent selector styles.
  • no-useless-children-snippet: Prevent unnecessary {@children} usage.
  • prefer-const: Prefer const over let.
  • no-navigation-without-base: Ensure proper usage of goto().

Migration Steps

1. Upgrade Package

npm install eslint-plugin-svelte@3

2. Check Node.js Version

node -v
  • Ensure it is v18.20.4 or later.

3. Check ESLint Version

npx eslint -v
  • Ensure it is 8.57.1 or later (or 9.x).

4. Use Flat Config (eslint.config.js)

  • Remove .eslintrc.js and migrate to eslint.config.js.

5. Apply the Updated Recommended Rules

  • If using recommended, check the impact of newly added rules.

6. Replace Deprecated Rules

  • Replace no-goto-without-base with no-navigation-without-base.