Open6

usagi-ts

Mikihiro SaitoMikihiro Saito

usagi.config.tsで設定をできるようにする。以下サンプル

import { defineUsagiConfig } from 'usagi-ts';

export default defineUsagiConfig([
  // Base configuration
  {
    language: 'en-US',
    reviews: {
      profile: 'chill',
      auto_review: {
        enabled: true,
      },
    },
  },
  {
    instruction_sets: {
      typescript: {
        description: 'Standard Typescript review instructions',
        instructions: (params: { constantsStyle: string }): string => `
          Review JavaScript code against these standards:
          1. Use the "function" keyword for functions. "Arrow functions" are prohibited.
          2. When defining types in TypeScript, utilize "type" aliases instead of "interface".
          3. Constants should be named using ${params.constantsStyle || 'UpperCamel'}.
        `
      }
    }
  },
]);
Mikihiro SaitoMikihiro Saito

ESLintのflat configライクにしたい

import { defineUsagiConfig } from 'usagi-ts';

// Import shared configuration modules directly
import baseConfig from './configs/base-config';
import jsConfig from '@my-org/usagi-js-config';

export default defineUsagiConfig([
  // Configurations are merged in order (earlier configs have higher precedence)
  baseConfig,   // Base organization configuration
  jsConfig,     // JavaScript-specific configuration
  
  // Inline configuration objects
  {
    reviews: {
      profile: 'assertive', // Override settings from imported configs
      auto_review: {
        drafts: true
      }
    }
  }
]);
Mikihiro SaitoMikihiro Saito

ユーザーがpresetを設定できるようにする。またパラメータをセットできるようにする

// configs/base-config.ts
import { UsagiExtendedConfig } from 'usagi-ts';

/**
 * Base organization configuration
 * @type {UsagiExtendedConfig}
 */
const baseConfig: UsagiExtendedConfig = {
  language: 'en-US',
  reviews: {
    profile: 'chill',
    auto_review: {
      enabled: true,
    },
  },
  
  // Shared instruction sets
  instruction_sets: {
    typescript: {
      description: 'Standard Typescript review instructions',
      instructions: (params: { constantsStyle: string }): string => `
        Review JavaScript code against these standards:
        1. Use the "function" keyword for functions. "Arrow functions" are prohibited.
        2. When defining types in TypeScript, utilize "type" aliases instead of "interface".
        3. Constants should be named using ${params.constantsStyle || 'UpperCamel'}.
      `
    }
  }
};

export default baseConfig;
Mikihiro SaitoMikihiro Saito

instructionsを設定できるようにする

import { defineUsagiConfig } from 'usagi-ts';
import baseConfig from './configs/base-config';
import { createJavaScriptInstructions } from './configs/instruction-functions';

export default defineUsagiConfig([
  baseConfig,
  {
    instructions: [
      {
        path: ["src/**/*.ts", "src/**/*.tsx"],
        instructions: {
          use: "typescript",
          with: {
            constantsStyle: "UPPER_SNAKE_CASE"
          }
        }
      }
    ]
  }
]);