Skip to content
/ structlint Public template

Project structure linter for Javascript, Typescript and Flow projects

License

Notifications You must be signed in to change notification settings

desfero/structlint

Repository files navigation

npm

structlint

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

About

Project structure linter for Javascript, Typescript and Flow projects

Topics

Resources

License

Security policy

Stars

Watchers

Forks

Sponsor this project

 

Packages

No packages published

Contributors 3

  •  
  •  
  •