标签: eslint-plugin-import

有没有办法阻止 npm 在 node_modules 内创建工作区包的符号链接?

我们正在开发一个使用 npm 工作区的 monorepo。该项目中的一个目录很特殊,因为我们不想允许该目录中的包相互创建导入。我们目前使用 eslint 和“eslint-plugin-import”无限制路径规则来阻止此目录中的包从同级目录导入。

从某些版本的 npm 开始,它开始在 node_modules 中自动创建这些包的符号链接,从而使限制变得毫无用处。我不想阻止所有的node_modules,并且我无法为每个添加的包手动列出所有同级模块。

有没有办法告诉 npm 不要为 node_modules 中的工作区包创建这些符号链接?

npm eslint eslint-plugin-import

11
推荐指数
0
解决办法
382
查看次数

使用 eslint-typescript-import + eslint-import-resolver-typescript + CRA 时找不到模块节点:fs

问题

我尝试在 TS 项目中设置路径别名,但未能运行。我遇到两个错误npm start

  • Module not found: Error: Can't resolve '~/App' in 'D:\work\workbench\templates\template-fe-pure\src'(尽管 VSC 仍然可以查看导入文件的位置;也就是没有波浪线)
  • Resolve error: Cannot find module 'node:fs'

我如何进行路径别名导入:
import App from "./App";->import App from "~/App";
tsconfig.json:("baseUrl": ".","paths": {"~/*": ["./src/*"]},完整文件如下所示)

环境

  • 带有 TS 模板的 CRA
  • eslint-plugin-import@2.26.0
  • eslint-import-resolver-typescript@3.2.5:我添加这个是为了使用符合上面的路径别名

文件

.eslintrc.json

{
  "root": true,
  "extends": [
    "eslint:recommended",
    "plugin:@typescript-eslint/recommended",
    "plugin:react/recommended",
    "plugin:react-hooks/recommended",
    "plugin:jsx-a11y/recommended",
    "plugin:import/recommended",
    "plugin:import/typescript",
    "plugin:eslint-comments/recommended",
    "plugin:prettier/recommended",
    "prettier"
  ],
  "parser": "@typescript-eslint/parser",
  "parserOptions": {
    "sourceType": "module",
    "ecmaVersion": 6,
    "ecmaFeatures": {
      "jsx": …
Run Code Online (Sandbox Code Playgroud)

typescript create-react-app eslint-plugin-import

10
推荐指数
2
解决办法
1万
查看次数

ESLint 插件导入未正确排序

我正在尝试对我的 Angular 应用程序中的导入进行排序。我安装并配置了eslint-plugin-import但它似乎不起作用或者我做错了什么

我想像这样对导入进行排序:

  1. 所有角度导入
  2. 所有 RxJS 导入
  3. 所有其他库(还没有正确的模式)
  4. 我的内部图书馆
  5. 组件的所有相对路径(fe.../组件、./组件)

在这个示例中,我以随机顺序使用带有虚拟导入的现有组件来检查 eslint --fix 是否有效。我把它粘贴在下面:

import { Observable } from 'rxjs';
import { Injectable } from '@angular/core';
import {
    SomeComponentOne,
    SomeComponentTwo,
    SomeComponentThree,
    SomeComponentFour,
} from '@internal-library';
import { SomeModelOne } from './model/some-model-one';
import { SomeModelTwo } from './model/some-model-two';
import { SomeModelThree } from './model/some-model-three';
import { MatSlideToggleModule } from '@angular/material/slide-toggle';
import { MatTooltipModule } from '@angular/material/tooltip';
import { TranslateModule } from '@ngx-translate/core';
import { SomeComponentOne } from './components/some-component-one'; …
Run Code Online (Sandbox Code Playgroud)

typescript eslint angular eslint-plugin-import

7
推荐指数
1
解决办法
5030
查看次数

使用打字稿别名时,eslint 导入/顺序会崩溃

我在大型反应项目中使用打字稿路径别名。例如,在我的 tsconfig.json 中,我指定了一些路径别名:

{
  "baseUrl": "./src",
    "paths": {
      "@common/*": ["common/*"],
      "@settings/*": ["settings/*"],
      // other paths
    }
}
Run Code Online (Sandbox Code Playgroud)

好的,现在当我想导入一些模块时,我可以使用这些别名。我们也在使用 eslint,我们使用的规则之一是import/order. 它强制任何来自 node_modules 的东西都应该在任何本地模块之前导入。我喜欢这个规则。不使用我的别名:

import React, { useEffect } from "react";
import SomeDistantComponent from '../../common/components/SomeDistantComponent'
import { Formik } from 'formik'
Run Code Online (Sandbox Code Playgroud)

这会抛出 linting 错误,但是根据 eslint 格式化文件会自动将 formik 导入移动到导入上方SomeComponent,这正是我想要的。

然而,在使用我的别名时,这并不会引发错误:

import React, { useEffect } from "react";
import SomeComponent from '@common/components/SomeComponent'
import { Formik } from 'formik'
Run Code Online (Sandbox Code Playgroud)

就好像打字稿路径别名欺骗了import/order规则,现在该规则失效了。

问题:我的 linter 怎么还能识别这些别名路径?我可以配置这个插件的groupspathGroups …

alias typescript eslint eslint-plugin-import

6
推荐指数
1
解决办法
718
查看次数

添加多个路径到 eslint-plugin-import 模式

我希望使用 eslint 强制我的导入遵循标准顺序。

我已经完成了这个工作,但是它会导致一个很长的 eslint 文件,因为我有许多不同的路径,我设置了 TypeScript 别名,我希望在对外部包进行排序时排除 eslint 规则。

我让它像这样工作:

"import/order": [
  "error",
  {
    "groups": ["builtin", "external", "internal"],
    "pathGroups": [
      {
        "pattern": "react*",
        "group": "external",
        "position": "before"
      },
      {
        "pattern": "Components/**",
        "group": "internal"
      },
      {
        "pattern": "Constants/**",
        "group": "internal"
      }
      ... more patterns here
    ],
    "pathGroupsExcludedImportTypes": ["react", "internal"],
    "alphabetize": {
      "order": "asc",
      "caseInsensitive": true
    }
  }
],
Run Code Online (Sandbox Code Playgroud)

我想知道是否有一种方法可以对模式进行分组,这样我就可以做类似这样的事情:

"import/order": [
  "error",
  {
    "groups": ["builtin", "external", "internal"],
    "pathGroups": [
      {
        "pattern": "react*",
        "group": "external",
        "position": "before"
      },
      {
        "pattern": "Components/**|Constants/**|AnotherAlias/**|AnotherAlias/**", …
Run Code Online (Sandbox Code Playgroud)

eslint eslint-plugin-import

6
推荐指数
1
解决办法
1260
查看次数

我可以强制匿名默认导出吗?

如果您有一个与默认导出名称相同的文件,为什么需要命名此导出?我不在DRY那儿。

我们有一条规则来阻止匿名默认导出,但是当有人使用匿名导出时,我该如何做相反的事情并强制出错呢?

javascript typescript reactjs eslint eslint-plugin-import

3
推荐指数
1
解决办法
685
查看次数