margrave
maintain the defense of borders of modules
Install
yarn global add margrave
Usage
cd path-to-projectmargrave
The margrave
command line scans import statements and checks some conventions about relative and absolute imports.
Conventions
- any directory contains aa
index.ts
files is a territory index.ts
files only should contain re-exports- some functions, types, and variables can be re-exported from
index.ts
as public - any
ts
ortsx
file inside a territory can import from any file inside the territory and this import should be relative - any
ts
ortsx
file can import fromindex.ts
of other territories, and this import should be absolute
Example
src
|-- app.tsx
|-- pages
| |-- index.ts
| `-- Page.tsx
`-- user
|-- index.ts
|-- type.ts
`-- User.tsx
file | import statement | allowed |
---|---|---|
src/pages/Page.tsx |
src/user |
✔️ |
src/pages/Page.tsx |
src/user/type |
❌ |
src/pages/Page.tsx |
../user |
❌ |
src/pages/Page.tsx |
../user/type |
❌ |
src/user/User.tsx |
./type |
✔️ |
src/user/User.tsx |
. |
❌ |
src/user/User.tsx |
src/user/type |
❌ |
src/user/User.tsx |
src/user |
❌ |