https://github.com/desfero/structlint
Project structure linter for Javascript, Typescript and Flow projects
https://github.com/desfero/structlint
architecture folders linter structlint structure
Last synced: 24 days ago
JSON representation
Project structure linter for Javascript, Typescript and Flow projects
- Host: GitHub
- URL: https://github.com/desfero/structlint
- Owner: desfero
- License: mit
- Created: 2020-01-09T23:25:50.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2023-01-05T04:57:50.000Z (over 2 years ago)
- Last Synced: 2025-05-05T08:40:01.640Z (about 1 month ago)
- Topics: architecture, folders, linter, structlint, structure
- Language: TypeScript
- Homepage:
- Size: 1.31 MB
- Stars: 7
- Watchers: 2
- Forks: 1
- Open Issues: 23
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README

![]()
## Getting Started
Install the package:
```sh
npm install --save-dev structlint
```in case you prefer `yarn`
```sh
yarn add -D structlint
```then add the config into a `.structlintrc` file. For example:
**.structlintrc**
```json
{
"structure": [
{
"description": "Core application business logic",
"path": "./modules",
"disallowedImports": [
{
"glob": "./components/**/*",
"message": "Business logic should never import UI components"
}
]
},
{
"description": "Reducers",
"path": "./reducers",
"disallowedImports": ["./components/**/*", "./sagas/**/*"],
"allowedImports": ["./utils/**/*"]
}
]
}
```You can have a single config file at the root of your project or multiple configs, one for every major sub directory.
```
- src
- reducers
- .structlintrc
- user.reducer.js
- settings.reducer.js
- profile.reducer.js
- components
- .structlintrc
- Header
- Header.js
- Header.scss
- Footer
- Header.js
- Header.scss
- sagas
- .structlintrc
- auth.saga.js
- profile.saga.js
- utils
- .structlintrc
- color.js
- url.js
- tests
- .structlintrc
- user-tests
- settings-tests
```## Usage
Run from the root of your project:
```sh
/.bin/structlint
```OR
```
npx structlint
```Structlint will recursively go through the sub-directories and lint them.
If you prefer to lint just one sub-directory, you must change the directory before running the command: `cd tests && structlint`.## Config options
### structure
Type: `array`
An array of objects containing the following:
| Name | Type | Description |
| ------------------- | ---------------------------------- | -------------------------------------------------------------------------------------------------------------------- |
| `description` | `String` | Name or label or description for the directory to be linted |
| `path` | `String` | Path to the directory to be linted relative to `.structlintrc` |
| `disallowedImports` | `Array` or `Array` | An array of globs representing the imports to be disallowed or an array of objects containing the glob and a message |
| `allowedImports` | `Array` or `Array` | An array of globs representing the imports to be allowed or an array of objects containing the glob and a message |
| `recursive` | `Boolean` | Defaults to `true`. If `false`, will not check sub directories. |Checkout the [examples](https://github.com/desfero/structlint/tree/master/examples) for more.
## Command line options
Usage: `structlint [options]`
Options:
`--print-config` - Group violations by configs (default: false) (_note:_ by default violations from multiple config from the same file are merged)
`-V`, `--version` - output the version number
`-h`, `--help` display help for command