@hirasaki/eslint-plugin-coding-rules

1.0.3 • Public • Published

eslint-plugin-coding-rules

eslint plugin for making coding rules.

installation

$ npm install --save-dev @hirasaki/eslint-plugin-coding-rules

Then, in your .eslintrc.json

{
  "plugins": ["@hirasaki/coding-rules"],
}

Finally, enable rules that you would like to use.

  "rules": {
    "@hirasaki/coding-rules/no-use-specific-imports": [
      "error", [
        {
          filePath: [
            "**/components/**",
          ],
          importName: ["react-redux", "**/stores"],
        },
        {
          filePath: [
            "**/pages/**",
          ],
          importName: ["**/*Service", "**/ServiceFactory"],
          message: "'{{importSource}}'からは'{{importFrom}}'をインポートすることはできません。",
        },
      ]
    ]
  }

Rule Details

no-use-specific-imports

Disallow specific imports from specific dirs or source files.

Options

format is

{
  filePath: string | string[],
  importName: string | string[],
  message?: string
}[]
key types description
filePath string or string[] Enter paths where the target file is located.
importName string or string[] Enter the name of the libraries for which import is prohibited.
message string custom error message.

message format

key description
{{importSource}} replaces the source file path.
{{importFrom}} replaces the import name.

example

  "rules": {
    "@hirasaki/coding-rules/no-use-specific-imports": [
      'error',
      [
        {
          filePath: [
            "**/components/**",
          ],
          importName: ["react-redux", "**/stores"],
        },
        {
          filePath: [
            "**/pages/**",
          ],
          importName: ["**/*Service", "**/ServiceFactory"],
          message: "'{{importSource}}'からは'{{importFrom}}'をインポートすることはできません。",
        },
      ]
    ]
  }

Files with paths that match filePath will not be able to import the library specified by importName.

  • components/atoms/ButtonAtom.tsx can not import react-redux or **/stores.
  • pages/MainPage.tsx can not import **/Service or **/ServiceFactory.

architecture example

architecture_example

  • **/components/atoms/**, components/moleculres/**, **/components/organisms/** can not import redux directly.
  • **/components/atoms/**, components/moleculres/**, **/components/organisms/**, **/pages/**, can not import service files directly.

Control the data processing flow by preventing direct import.

react sample code is here sample code

Implementation

Package Sidebar

Install

npm i @hirasaki/eslint-plugin-coding-rules

Weekly Downloads

0

Version

1.0.3

License

MIT

Unpacked Size

19.8 kB

Total Files

11

Last publish

Collaborators

  • hirasaki