structlint
v1.0.0-beta.1
Published
Lint your project structure against architecture rules
Downloads
14
Maintainers
Readme
Getting Started
Install the package:
npm install --save-dev structlint
in case you prefer yarn
yarn add -D structlint
then add the config into a .structlintrc
file. For example:
.structlintrc
{
"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:
<path-to-node-modules>/.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<String>
or Array<Object>
| An array of globs representing the imports to be disallowed or an array of objects containing the glob and a message |
| allowedImports
| Array<String>
or Array<Object>
| 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 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