是否有一个简单的解决方案(也许是 lint 规则?)可以帮助通过索引文件强制执行干净的代码导入?我想阻止从“表兄弟”文件导入代码,除非它是通过索引文件提供的。
前任:
- app
+ dogs
| + index.ts
| + breeds
| | + retriever.ts
| | + schnauzer.ts
| + activities
| + playing.ts
| + walking.ts
+ cats
+ index.ts
+ breeds
| + siamese.ts
| + persion.ts
+ activities
+ sleeping.ts
+ hunting.ts
Run Code Online (Sandbox Code Playgroud)
从以下角度导入cats/activities/hunting.ts:
import { sleeping } from './sleeping' // VALID - inside same folder
import { siamese } from '../breeds/siamese' // VALID - inside cats module
import { playing } from '../../dogs' // VALID - importing from an index
import { retriever} from '../../dogs/activities/breeds' // INVALID - cousin file outside module possibly not exported from index
Run Code Online (Sandbox Code Playgroud)
您可以使用 eslint 的import/no-internal-modules规则并.eslintrc为每个“根”模块配置单独的规则。
在您的dogs文件夹中,创建一个.eslintrc包含以下内容的新文件:
{
"rules": {
"import/no-internal-modules": [ "error", {
"allow": [ "app/dogs/**", "app/*" ],
} ]
}
}
Run Code Online (Sandbox Code Playgroud)
这意味着 dogs 文件夹(或 dogs 的任何子文件夹)中的任何 js/ts 文件都可以从其自己的包或任何类似的包导入文件/cats
cats对您的模块和任何其他“根”模块执行相同的操作。
| 归档时间: |
|
| 查看次数: |
2604 次 |
| 最近记录: |