Detalhes do pacote

eslint-plugin-atomic-design

RyoNkmr3.4kMIT1.0.1

ESLint rules for Atomic Designed projects

eslint, eslintplugin, eslint-plugin, atomic design

readme (leia-me)

eslint-plugin-atomic-design

npm version CircleCI downloads Coverage Status david-dm

Installation

You'll first need to install ESLint:

$ npm i eslint --save-dev

Next, install eslint-plugin-atomic-design:

$ npm install eslint-plugin-atomic-design --save-dev

Note: If you installed ESLint globally (using the -g flag) then you must also install eslint-plugin-atomic-design globally.

Usage

Add atomic-design to the plugins section of your .eslintrc configuration file. You can omit the eslint-plugin- prefix:

{
  "plugins": ["atomic-design"]
}

Then configure the rules you want to use under the rules section.

{
  "rules": {
    "atomic-design/hierarchical-import": 2
  }
}

Rules

Hierarchical Dependencies (hierarchical-import)

Currently, this is the only rule of this plugin.

options

excludes Array<RegExpString>

Matching patterns ignore both target file paths and importing paths.

default: ['node_modules\/\\w']

levels Array<String|String[]>

Components levels in your projects listing up in order of size and starting with '=' are capable of the same level importing.
Additionally, this can be defined the same level components as an Array of strings:

{
  levels: [['elements', 'atoms'], 'molecules', ['=organisms', 'sections']],
},

default: ['atoms', 'molecules', '=organisms', 'templates', 'pages']

pathPatterns Array<RegExpString>

Patterns should contain a capturing group like (\\w+):

{
  pathPatterns: ['components/(\\w+)/', 'routes/(\\w+)/'],
},

or <DefaultParser> takes the last match of one of the levels in import paths.

default: <DefaultParser>

module 'strict' | 'loose' | 'off' | false

"module" mode allows to have children as module's "private" components.

in 'loose' mode (default setting):

// in './components/molecules/SuperDatepicker/SuperDatepickerCalender.js'

// valid
import CommonLabel from '@/components/atom/CommonLabel.js';
import SuperDatepickerCalenderInput from '@/components/molecules/SuperDatepicker/SuperDatepickerCalenderInput.js';

// invalid (Module children are "private")
import OtherModuleChildren from '@/components/molecules/OtherModule/OtherModuleChildren.js';

in 'strict' mode, "private" children are protected even if importing comes from the same module siblings:

// in './components/molecules/SuperDatepicker/SuperDatepickerCalender.js'

// valid
import CommonLabel from '@/components/atom/CommonLabel.js';

// invalid (Module children are "private")
import OtherModuleChildren from '@/components/molecules/OtherModule/OtherModuleChildren.js';

// invalid (Only the module root component can import its children)
import SuperDatepickerCalenderInput from '@/components/molecules/SuperDatepicker/SuperDatepickerCalenderInput.js';
// valid in the "root" component './components/molecules/SuperDatepicker/SuperDatepicker.js'

in non-module mode:

// in './components/molecules/SuperDatepicker/SuperDatepickerCalender.js'

// valid
import CommonLabel from '@/components/atom/CommonLabel.js';

// invalid (molecules -> molecules)
import OtherModuleChildren from '@/components/molecules/OtherModule/OtherModuleChildren.js';
import SuperDatepickerCalenderInput from '@/components/molecules/SuperDatepicker/SuperDatepickerCalenderInput.js';

default: loose

© RyoNkmr

changelog (log de mudanças)

1.0.1 (2021-03-25)

Bug Fixes

1.0.0 (2021-03-22)

Bug Fixes

  • fix 'module not found prettier' error (8f3f0bb)

Code Refactoring

  • eslint: remove support eslint 0.x and expect >=7.22.0 (f29915d)

Performance Improvements

  • update supported node versions to 12 (7bd57dd)

BREAKING CHANGES

  • removal of outdated node versions, requires >=12
  • eslint: remove support older eslint versions, requires >= 7.22.0

0.2.2 (2019-05-29)

Bug Fixes

  • hierachical-import: fill the missing specs that allows importing module root components from th (01adf86)