Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

import/order Issue: Inconsistency of sorting, presumably because of different operating systems #2988

Open
felix2246 opened this issue Mar 20, 2024 · 2 comments

Comments

@felix2246
Copy link

felix2246 commented Mar 20, 2024

Node version: 18.19.1
npm version: 9.6.6
Local ESLint version: v8.57.0
Global ESLint version: v8.57.0
Operating System: Windows 10.0.22631 Build 22631 and Ubuntu 22.04.4 (LTS)

.eslintrc.cjs
module.exports = {
  root: true,
  extends: [
    'standard-with-typescript',
    'plugin:@typescript-eslint/recommended',
    'plugin:tailwindcss/recommended',
    'plugin:svelte/recommended'
  ],
  parser: '@typescript-eslint/parser',
  plugins: ['@typescript-eslint'],
  parserOptions: {
    project: './tsconfig.eslint.json',
    sourceType: 'module',
    ecmaVersion: 2020,
    extraFileExtensions: ['.svelte']
  },
  env: {
    browser: true,
    es2017: true
  },
  overrides: [
    {
      files: ['*.svelte'],
      parser: 'svelte-eslint-parser',
      parserOptions: {
        parser: '@typescript-eslint/parser'
      },
      rules: {
        'svelte/indent': 'error',
        indent: 'off'
      }
    }, {
      files: ['*.cjs'],
      rules: {
        '@typescript-eslint/no-var-requires': 'off'
      }
    }
  ],
  rules: {
    indent: 'error',
    curly: ['error', 'all'],
    'brace-style': ['error', '1tbs'],
    'svelte/html-quotes': [
      'error',
      {
        prefer: 'double'
      }
    ],
    'import/order': [
      'error',
      {
        'newlines-between': 'never',
        alphabetize: {
          order: 'asc',
          caseInsensitive: true
        },
        groups: ['builtin', 'external', 'internal', 'parent', 'sibling', 'index'],
        pathGroups: [
          {
            pattern: 'svelte/**',
            group: 'external',
            position: 'before'
          },
          {
            pattern: '\\$app/**',
            group: 'external',
            position: 'after'
          },
          {
            pattern: '\\$env/**',
            group: 'external',
            position: 'after'
          },
          {
            pattern: '\\$lib/**',
            group: 'internal',
            position: 'after'
          }
        ],
        pathGroupsExcludedImportTypes: ['builtin']
      }
    ],
    '@typescript-eslint/no-unnecessary-condition': 'error',
    '@typescript-eslint/type-annotation-spacing': 'error',
    '@typescript-eslint/no-throw-literal': 'off',
    'tailwindcss/no-custom-classname': ['error', {
      whitelist: ['scrollbar-hide']
    }]
  }
}

package.json
"scripts": {
    "start": "vite dev",
    "build": "vite build",
    "preview": "vite preview",
    "lint": "eslint .  --ext .ts,.cjs,js,svelte",
  },
"devDependencies": {
    "@sveltejs/adapter-auto": "^3.1.1",
    "@sveltejs/adapter-static": "^3.0.1",
    "@sveltejs/enhanced-img": "^0.1.9",
    "@sveltejs/kit": "^2.5.4",
    "@sveltejs/vite-plugin-svelte": "^3.0.2",
    "@types/deep-equal": "^1.0.4",
    "@types/eslint": "^8.56.5",
    "@types/express": "^4.17.21",
    "@typescript-eslint/eslint-plugin": "^6.4.0",
    "@typescript-eslint/parser": "^6.0.0",
    "autoprefixer": "^10.4.18",
    "eslint": "^8.57.0",
    "eslint-config-standard-with-typescript": "^43.0.1",
    "eslint-plugin-svelte": "^2.35.1",
    "eslint-plugin-tailwindcss": "^3.15.1",
    "lefthook": "^1.6.7",
    "postcss": "^8.4.35",
    "svelte": "^4.2.12",
    "svelte-check": "^3.6.7",
    "tailwindcss": "^3.4.1",
    "tslib": "^2.6.2",
    "typescript": "^5.4.2",
    "vite": "^5.1.6",
    "vitest": "^1.4.0"
  },
"dependencies": {
    "@internationalized/date": "^3.5.2",
    "bits-ui": "^0.19.7",
    "clsx": "^2.1.0",
    "cmdk-sv": "^0.0.15",
    "date-fns": "^3.6.0",
    "deep-equal": "^2.2.3",
    "eslint-plugin-import": "^2.29.1",
    "firebase": "^10.9.0",
    "firebase-admin": "^12.0.0",
    "firebase-functions": "^4.8.0",
    "lucide-svelte": "^0.358.0",
    "mongodb": "^6.5.0",
    "openai": "^4.29.1",
    "svelte-radix": "^1.1.0",
    "tailwind-merge": "^2.2.1",
    "tailwind-variants": "^0.2.1",
    "zod": "^3.22.4"
  }

The issue refers to an inconsistency of the sorting of the "import/order" rule, presumably because of different operating systems. It is a svelte project in typescript.

This is a minimal example:

import EditDialog from './edit-dialog.svelte'
import { UserValidator } from '$lib/validators'

We expected the imports to be sorted like this (using eslint --fix):

import { UserValidator } from '$lib/validators'
import EditDialog from './edit-dialog.svelte'

This works on the Github Runner (Ubuntu) that runs the linting on every commit (npm ci && npm run lint). The problem is that on my machine (Windows), the linter reports an error that the imports are sorted incorrectly:
error `./edit-dialog.svelte` import should occur before import of `$lib/validators` import/order

After running eslint --fix on my windows machine, the imports are sorted like this:

import EditDialog from './edit-dialog.svelte'
import { UserValidator } from '$lib/validators'

When making a commit with this import order, the linting on github fails with the error:
./edit-dialog.svelte` import should occur after import of `$lib/validators

Is there something wrong with my configuration?
Thank you in advance!

@daniluk4000
Copy link

Same error

@weyert
Copy link

weyert commented Apr 26, 2024

Yes, I am having the same issue where I am getting error reports by import/order when running in Github Runners using ubuntu-latest. On my developer notebook (macOS M1) or a macos-latest runner they both pass happily.

Looks like it an operation system or architecture behaviour different for sorting. I only couldn't figure out anything obvious in order.js

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

No branches or pull requests

3 participants