eslint plugin for making coding rules.
$ 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}}'をインポートすることはできません。",
},
]
]
}
Disallow specific imports from specific dirs or source files.
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. |
key | description |
---|---|
{{importSource}} | replaces the source file path. |
{{importFrom}} | replaces the import name. |
"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 importreact-redux
or**/stores
.pages/MainPage.tsx
can not import**/Service
or**/ServiceFactory
.
**/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