For AI agents: the complete documentation index is available at /byethrow/ja/llms.txt, the full documentation bundle is available at /byethrow/ja/llms-full.txt, and this page is available as Markdown at /byethrow/ja/guide/ecosystem/linter/index.md.
  • 日本語
  • Linter プラグイン

    @praha/byethrow-oxlint は、@praha/byethrow 使用時のベストプラクティスを強制する Oxlint プラグインです。

    インストール

    npm install -D @praha/byethrow-oxlint

    セットアップ

    推奨プリセットを使用する

    最も簡単な方法は、推奨プリセットを拡張することです。すべてのルールがデフォルト設定で有効になります。

    oxlint.config.ts
    import 
    const oxlintByethrowPlugin: OxlintPlugin
    oxlintByethrowPlugin
    from '@praha/byethrow-oxlint';
    import {
    function defineConfig<T extends OxlintConfig>(config: T & OxlintConfig): T

    Define an Oxlint configuration with type inference.

    @paramconfig - Oxlint configuration@returnsConfig unchanged
    defineConfig
    } from 'oxlint';
    export default
    defineConfig<{
        extends: OxlintConfig[];
    }>(config: {
        extends: OxlintConfig[];
    } & OxlintConfig): {
        extends: OxlintConfig[];
    }

    Define an Oxlint configuration with type inference.

    @paramconfig - Oxlint configuration@returnsConfig unchanged
    defineConfig
    ({
    extends: OxlintConfig[]

    Configuration objects to extend.

    Import configurations and pass them directly instead of using file paths.

    extends
    : [
    const oxlintByethrowPlugin: OxlintPlugin
    oxlintByethrowPlugin
    .
    recommended: OxlintConfig
    recommended
    ,
    ], });

    ルールを手動で設定する

    より細かく制御したい場合は、プラグインを読み込んで個別のルールを有効にできます。

    oxlint.config.ts
    import { 
    function defineConfig<T extends OxlintConfig>(config: T & OxlintConfig): T

    Define an Oxlint configuration with type inference.

    @paramconfig - Oxlint configuration@returnsConfig unchanged
    defineConfig
    } from 'oxlint';
    export default
    defineConfig<{
        jsPlugins: {
            name: string;
            specifier: string;
        }[];
        rules: {
            'byethrow/consistent-namespace': "error";
            'byethrow/no-ambiguous-error-type': "error";
        };
    }>(config: {
        jsPlugins: {
            name: string;
            specifier: string;
        }[];
        rules: {
            'byethrow/consistent-namespace': "error";
            'byethrow/no-ambiguous-error-type': "error";
        };
    } & OxlintConfig): {
        jsPlugins: {
            name: string;
            specifier: string;
        }[];
        rules: {
            'byethrow/consistent-namespace': "error";
            'byethrow/no-ambiguous-error-type': "error";
        };
    }

    Define an Oxlint configuration with type inference.

    @paramconfig - Oxlint configuration@returnsConfig unchanged
    defineConfig
    ({
    jsPlugins: {
        name: string;
        specifier: string;
    }[] & ExternalPluginEntry[]

    JS plugins, allows usage of ESLint plugins with Oxlint.

    Read more about JS plugins in the docs.

    Note: JS plugins are in alpha and not subject to semver.

    Examples:

    Basic usage with a local plugin path.

    {
      "jsPlugins": [
        "./custom-plugin.js"
      ],
      "rules": {
        "custom/rule-name": "warn"
      }
    }

    Basic usage with a TypeScript plugin and a local plugin path.

    TypeScript plugin files are supported in the following environments:

    • Deno and Bun: TypeScript files are supported natively.
    • Node.js >=22.18.0 and Node.js ^20.19.0: TypeScript files are supported natively with built-in type-stripping enabled by default.

    For older Node.js versions, TypeScript plugins are not supported. Please use JavaScript plugins or upgrade your Node version.

    {
      "jsPlugins": [
        "./custom-plugin.ts"
      ],
      "rules": {
        "custom/rule-name": "warn"
      }
    }

    Using a built-in Rust plugin alongside a JS plugin with the same name by giving the JS plugin an alias.

    {
      "plugins": [
        "import"
      ],
      "jsPlugins": [
        {
          "name": "import-js",
          "specifier": "eslint-plugin-import"
        }
      ],
      "rules": {
        "import/no-cycle": "error",
        "import-js/no-unresolved": "warn"
      }
    }
    jsPlugins
    : [
    {
    name: string
    name
    : 'byethrow',
    specifier: string
    specifier
    : '@praha/byethrow-oxlint',
    }, ],
    rules: {
        'byethrow/consistent-namespace': "error";
        'byethrow/no-ambiguous-error-type': "error";
    } & DummyRuleMap

    Example

    .oxlintrc.json

    {
      "$schema": "./node_modules/oxlint/configuration_schema.json",
      "rules": {
        "eqeqeq": "warn",
        "import/no-cycle": "error",
        "prefer-const": [
          "error",
          {
            "ignoreReadBeforeAssign": true
          }
        ]
      }
    }

    See Oxlint Rules for the list of rules.

    rules
    : {
    'byethrow/consistent-namespace': 'error', 'byethrow/no-ambiguous-error-type': 'error', // ... }, });

    設定

    settingsbyethrow キーを追加することで、プラグインがbyethrowのインポートを検出する方法をカスタマイズできます。独自パッケージから @praha/byethrow を再エクスポートしている場合などに便利です。

    オプションデフォルト説明
    modulestring | string[]"@praha/byethrow"byethrowとして扱うモジュールの指定子
    namespacestring | string[]["Result", "R"]byethrow名前空間として扱うインポート名
    oxlint.config.ts
    import { 
    function defineConfig<T extends OxlintConfig>(config: T & OxlintConfig): T

    Define an Oxlint configuration with type inference.

    @paramconfig - Oxlint configuration@returnsConfig unchanged
    defineConfig
    } from 'oxlint';
    export default
    defineConfig<{
        settings: {
            byethrow: {
                module: string[];
                namespace: string[];
            };
        };
    }>(config: {
        settings: {
            byethrow: {
                module: string[];
                namespace: string[];
            };
        };
    } & OxlintConfig): {
        settings: {
            byethrow: {
                module: string[];
                namespace: string[];
            };
        };
    }

    Define an Oxlint configuration with type inference.

    @paramconfig - Oxlint configuration@returnsConfig unchanged
    defineConfig
    ({
    settings: {
        byethrow: {
            module: string[];
            namespace: string[];
        };
    } & OxlintPluginSettings

    Plugin-specific configuration for both built-in and custom plugins. This includes settings for built-in plugins such as react and jsdoc as well as configuring settings for JS custom plugins loaded via jsPlugins.

    settings
    : {
    byethrow: {
        module: string[];
        namespace: string[];
    }
    byethrow
    : {
    module: string[]
    module
    : ['@praha/byethrow', '@my-org/result'],
    namespace: string[]
    namespace
    : ['Result', 'R'],
    }, }, });

    ルール

    ルール説明自動修正
    consistent-namespace一貫した名前空間エイリアスを強制
    no-ambiguous-error-type非具体的なエラー型を禁止
    no-ambiguous-success-type非具体的な成功型を禁止
    no-negated-type-guardsisSuccess/isFailure の否定を禁止
    no-throw-in-callbackbyethrowコールバック内の throw を禁止
    no-try-catch-in-callbackbyethrowコールバック内の try-catch を禁止
    prefer-result-asyncPromise<Result> より ResultAsync を優先
    prefer-result-matcherstoBeSuccess/toBeFailure マッチャーを優先
    prefer-result-maybe-asyncResult | ResultAsync より ResultMaybeAsync を優先