Skip to content

Latest commit

 

History

History
1422 lines (1024 loc) · 105 KB

changelog.md

File metadata and controls

1422 lines (1024 loc) · 105 KB

0.12.0

Release Date: 2023-04-28 Project Board Milestone

Show all commits

Improvements

Update to tmpl template repository version 0.11.0 — #86 ⇄ #87 (⊶ cacc9fac)

→ Updated to tmpl version 0.11.0, including the versions in between starting from 0.10.0:

  1. Optimized GitHub action workflow scope.
  2. Updated Node.js packages & GitHub actions 1 2.
  3. Opts-in the Dependabot version update configuration.
  4. Migrated to Markdown style guide version 0.4.0.

This also includes changes required for any linter matches.

svengreb GitHub account and @svengreb npm package scope migration — #88 ⇄ #89 (⊶ 61b554e7)

→ With the retirement of the Arctic Ice Studio personal & Nord project brand this project also moved to the real-in-person identity “Sven Greb“ both in the context of the repository to the svengreb GitHub account and the @svengreb npm package scope. During this migration the current npm packages @arcticicestudio/eslint-config-base, @arcticicestudio/eslint-config and @arcticicestudio/eslint-config-typescript have been deprecated in favor of the new and upcoming @svengreb/eslint-config-base, @svengreb/eslint-config and @svengreb/eslint-config-typescript packages that will be published afterwards.

Also the visual representation of this style guide through the way too outdated and deprecated GitBook major version 2 has been unpublished and removed. The documentations and references have been updated to use the GitHub repository with the Markdown rendering instead for now until a custom website has been implemented using a modern TechStack like Next.js.

Migrate to @svengreb/remark-preset-lint npm package — #90 ⇄ #91 (⊶ 53538322)

→ Before the used @arcticicestudio/remark-preset-lint package has been deprecated during the svengreb GitHub account and @svengreb npm package scope migration and replaced by the new @svengreb/remark-preset-lint package.

Migrate to ESLint major version 8 — #92 ⇄ #93 (⊶ 19588e57)

→ Before the supported ESLint major version for all npm packages of this styleguide was still 7 which has been updated to 8, released on 2021-10-09. To update all packages, the official ESLint 8 migration guide has been used to adapt the breaking changes for users, but none of them affected this project so there were no further steps required other than updating the corresponding package (dev/peer)dependencies.

The following plugins have been updated to their latest major & minor versions to match the supported ESLint version:

  • eslint^7.32.0major version 8 · currently latest version is ^8.39.0 which will be used as minimal requirement.
  • eslint-plugin-prettier^3.4.1major version 4 · currently latest version is 4.2.1 which will be used as minimal requirement.
    • Dropped support for older versions of ESLint, Prettier and Node. It now requires at least ESLint >=7.28.0 <8.0.0, Prettier >=2.0.0 <3.0.0 and Node >=12.0.0.
  • eslint-find-rules3.6.1major version 4 · currently latest version is 4.1.0 which will be used as minimal requirement.
    • Comes with support for ESLint 8.
  • @typescript-eslint/eslint-plugin^4.33.0major version 5 · currently latest version is 5.59.1 which will be used as minimal requirement.
    • Comes with support for ESLint 8.
    • Dropped support for Node <=10.
    • Dropped support for ESLint <=5.
  • @typescript-eslint/parser^4.33.0major version 5 · currently latest version is 5.59.1 which will be used as minimal requirement.
    • Comes with support for ESLint 8.
    • Dropped support for Node <=10.
    • Dropped support for ESLint <=5.
  • typescript^4.9.5major version 5 · currently latest version is 5.0.4 which will be used as minimal requirement.
    • Dropped support for Node <=12.

0.11.0

Release Date: 2021-04-14 Project Board Milestone

Show all commits

Improvements

Allow void operator as a statement for React Hooks — #55 ⇄ #56 (⊶ af9c38b8)

↠ To run async code in a React useEffect Hook the official React Hook FAQ section about how to fetch data recommends and shows in a demo how to define a scoped fat arrow function and run it immediately. Unfortunately this collided with the @typescript/no-floating-promises rule because the returned Promise of the called function must not be handled anymore.

useEffect(() => {
  const init = async () => {
    try {
      const data = await fetchData();
      setInitialized(isInit);
      if (data) initStores(data);
    } catch (err) {
      handleError(err);
    }
  };
  // This will trigger the "@typescript/no-floating-promises" rule because the returned "Promise" is not handled.
  init();
}, [fetchData, handleError, initStores, setInitialized]);

Explicitly disabling the rule for these specific code lines would have been an option, but it is recommended to use the void operator instead.

// ...
// This will trigger the "no-void" rule because the "void" operator is currently not allowed as a statement.
void init();
// ...

However, the no-void rule did not allow the void operator to be used as statement which resulted in this rule to also throw an error. To resolve both problems, the allowAsStatement option of the no-void rule has been enabled.

Also see typescript-eslint/typescript-eslint#1184 where this solution is also recommended by one of the @typescript-eslint package maintainers.

0.10.0

Release Date: 2021-04-08 Project Board Milestone

Show all commits

Improvements

@arcticicestudio/remark-preset-lint migration — #47 ⇄ #48 (⊶ 90953d7c)

↠ The remark-preset-lint-arcticicestudio package has been deprecated during the migration into a monorepo and replaced by the new @arcticicestudio/remark-preset-lint package. This package also introduced support for remark 13.0.0 which comes with some new features and great improvements. To migrate to the new package the remark-preset-lint-arcticicestudio preset has been replaced by the new @arcticicestudio/remark-preset-lint preset in the .remarkrc.js file.

Bug Fixes

Invalid usage of prettier/@typescript-eslint configuration — #49 ⇄ #52 (⊶ c1aca60a)

↠ As of eslint-config-prettier version 8.0.0 all configurations have been merged into the prettier configuration that now includes not just ESLint core rules, but also rules from all plugins. In #32 the eslint-config-prettier version was bumped from version v6.0.0 to v8.1.0, but the @arcticicestudio/eslint-config-typescript package still explicitly extends the prettier/@typescript-eslint configuration which results in an error when consuming the package.

To fix this problem, the prettier/@typescript-eslint has been removed entirely from the extend field, leaving only the all-in-one prettier configuration.

Loop on TypeScript configuration override — #50 ⇄ #53 (⊶ ddc16cc7)

↠ In #32 the @arcticicestudio/eslint-config-typescript package migrated to the latest plugin versions and added the override field to its index to simplify the usage for consumers by removing the need to explicitly define it per project. Unfortunately this resulted in a crash loop when doing so and also blocked users from overriding single rules based on the project needs.

To fix this problem, the override field has been removed again, leaving it up to the user to define and customize the ESLint configuration for TypeScript to fit the project needs.

Invalid usage of prettier/@typescript-eslint configuration — #51 ⇄ #54 (⊶ aba45876)

↠ TypeScript uses triple-slash directives (single-line comments containing a single XML tag) to define compiler directives. The @arcticicestudio/eslint-config-base configures the ESLint core rule spaced-comment and already defines exceptions and comment markers for special use cases, but did not support triple-slash directives. When running eslint --fix these comments in *.d.ts files were malformed (///// /) which resulted in invalid TypeScript syntax.

To support triple-slash directives, the / marker has been added to the line field.

0.9.0

Release Date: 2021-04-04 Project Board Milestone

Show all commits

Features

Update ESLint and plugins — #31 ⇄ #32 (⊶ 486b2d18)

↠ ESLint and most of the used plugins released new major versions so trying to use later versions of these plugins as well as ESLint itself caused errors when using npm v7 because peer dependencies are installed automatically now, which is a fantastic change, but also breaks and blocks the usage of the configuration packages due to outdated peerDependencies like eslint@^6.

Core

The latest version 7 comes with great features and improvements. See the official v7 migration guide for all details.

Plugins & Dependencies

@arcticicestudio/eslint-config

@arcticicestudio/eslint-config-base

@arcticicestudio/eslint-config-typescript

Improvements

Migrate to "tmpl" template repository — #35 ⇄ #36 (⊶ e6709a9c)

↠ Migrated the project setup, structure and development workflow from version 0.9.0 of the “tmpl“ template repository. Additionally specific assets like the repository hero image have been replaced and documentations like the README and GitHub issue/PR templates have been adjusted.

Move ESLint Prettier support into base package — #37 ⇄ #38 (⊶ a50130e0)

↠ Before eslint-plugin-prettier and its corresponding eslint-config-prettier package were supported by the @arcticicestudio/eslint-config rule preset package. This worked fine for most projects, but also pulled in React specific dependencies like eslint-plugin-react and eslint-plugin-jsx-a11y. To allow to use Prettier without @arcticicestudio/eslint-config, the support has been moved into the @arcticicestudio/eslint-config-base package, including the optional entry point.

Tasks

Node.js package dependency & GitHub action version updates — #24, #23, #33 ⇄ #27, #34

↠ Bumped outdated Node.js package dependencies and GitHub actions to their latest versions:

GitHub Flow migration — #39 ⇄ #40 (⊶ 70b81fc5)

Subtask of svengreb/styleguide-git#9

↠ Adapted to GitHub Flow like documented in detail in the main task issue svengreb/styleguide-git#9.

From master to main — #45 ⇄ #46 (⊶ 2ba56fb3)

Subtask of svengreb/styleguide-git#11

↠ Adapted to the default branch renaming from master to main like documented in detail in the main task issue svengreb/styleguide-git#11.

0.8.0

Release Date: 2019-08-22 Project Board Milestone

Show all commits

Features

Packages

@arcticicestudio/eslint-config

React Hooks support and entry point — #17 ⇄ #18 (⊶ 833cc51d) ↠ All React based projects using at least React version 16.8 that introduced the awesome Hooks. Since this comes with a entire new API that follows new design/usage pattern, the React team created an official „Hooks“ ESLint plugin to help to adhere to the „Rules of Hooks“.

Since the @arcticicestudio/eslint-config package already includes support for React and „JSX A11Y“, support for Hooks has also been added through a new shareable configuration entry point that

  • enables the react-hooks plugin.
  • configures both currently available rules react-hooks/rules-of-hooks and react-hooks/exhaustive-deps rule to error level.

Because Hooks make more use of arrow functions the react/jsx-no-bind has been adjusted to prevent compatibility problems by allowing setting the ignoreDOMComponents and allowArrowFunctions options to true. The react/display-name rule has also been disabled in order to prevent problems due to missing display names for functional components that make use of Hooks instead of being created through a class component.

The new entry point is available as @arcticicestudio/eslint-config/react-hooks and can be composed with all other available entry points to inherit their rules.

This feature adds the eslint-plugin-react-hooks package as new peer dependency for @arcticicestudio/eslint-config.

ESLint TypeScript Configuration Package — #19 ⇄ #20 (⊶ 484c981d) ↠ To support projects build with TypeScript, a new @arcticicestudio/eslint-config-typescript package has been implemented using the awesome @typescript-eslint project. It mainly extends @typescript-eslint/eslint-plugin's already provided and recommended configurations in order to adapt best practices:

  1. plugin:@typescript-eslint/eslint-recommended
  2. plugin:@typescript-eslint/recommended
  3. plugin:@typescript-eslint/recommended-requiring-type-checking

The @typescript-eslint/parser is set as ESLint parser. As of @typescript-eslint/parser version 2.0.0 (also see typescript-eslint/typescript-eslint#890), the parser will panic when parsing files that are not included within the provided tsconfig(s). The documentation of the new package contains instructions and a quick setup and usage guide to inform about the required tsconfig configurations and the corresponding eslintrc changes.

Next to the support for TypeScript, the package also modifies some React and import related rules in order to prevent conflicts, like the adaption of the .ts and .tsx extensions for all JS and JSX files as well as removing .jsx to force the usage of .tsx. There are other rules that have been disabled like the check for valid React prop-types since these and not necessary anymore when working with TypeScript.

The new package provides two entry points, available as @arcticicestudio/eslint-config-typescript and @arcticicestudio/eslint-config-typescript/prettier that can both be composed with all other available entry points to inherit their rules.

This package mainly depends on the @typescript-eslint/eslint-plugin@^2.0.0 and @typescript-eslint/parser@^2.0.0 packages as peer dependencies.

From CircleCI to GitHub Actions — #21 ⇄ #22 (⊶ c7d663eb) ↠ The project migrated from CircleCI as CI/CD service to the awesome new GitHub Actions that is smoothly integrated into the GitHub platform and page for a „single-source-of-truth“ developer experience: OPS configurations as code right next to the source code in the repository.

Previous Project State

The previous project setup used CircleCI with API version 2.x as CI/CD service. This worked great, but also comes with the disadvantage of being decoupled from the repository.

The GitHub Actions CI/CD UI

During GitHub Universe 2018, the awesome new GitHub Actions feature was introduced and launched as closed beta. Luckily Sven Greb was given access in order to test all the great possibilities. During the GitHub Actions stream „Now with built-in CI/CD!“ (live from GitHub HQ) the Actions update was announced and previewed showing the expansion to use GitHub Actions as CI/CD service described as „fast CI/CD for any OS, any language, and any cloud“.

Live logs showing real-time feedback

See the official GitHub Actions documentation for details about setups, features, the configuration API and many more!

Project Integration

The switch from CircleCI to GitHub Actions brought many advantages like a „close-to-the-source“ development pipeline. Having the code and automated pipelines/workflows in one place is worth a lot. This also comes along with the perfect and smooth integrations into the GitHub platform and page itself like status reports on PRs and many more possibilities like the customization and triggering of workflows through webhooks for almost every event that can occur in a repository/issue/PR etc.

To integrate GitHub Actions the previous CircleCI build configuration has been adapted and adjusted. The official starter-workflows were used as inspiration as well as showcase projects like Yarn Berry (Yarn v2) also presented during the announcement livestream.

Next to the starter-workflows repository the official GitHub Actions documentation was the main source of information to set up the project workflows.

GitHub Actions starter workflows based on the epository languages

Since GitHub Actions are still in closed/limited public beta, there is no support for SVG badges through shields.io. Anyway, there are (currently undocumented) official badges provided by the GitHub API that are used until Actions goes GA and shields.io implements support for it: https://github.com/{owner}/{repo}/workflows/{workflow_name}/badge.svg

0.7.0

Release Date: 2019-08-19 Project Board Milestone

Show all commits

Epics

Monorepo with ESLint packages — #8 ⇄ #16 (⊶ ac611f7e) ↠ Resolved the epic by converting the repository into a monorepo and migrating the @arcticicestudio/eslint-config (previously eslint-config-arcticicestudio) + @arcticicestudio/eslint-config-base (previously eslint-config-arcticicestudio-base) packages!

Previous Project State

Previously this repository only contained the actual styleguide documentation while specific projects that implement the guidelines for linters and code style analyzer lived in separate repositories. This was the best approach for modularity and a small and clear code base, but it increased the maintenance overhead by 1(n) since changes to the development workflow or toolbox, general project documentations as well as dependency management required changes in every repository with dedicated tickets/issues and PRs. In particular, Node packages require frequent dependency management due to their fast development cycles to keep up-to-date with the latest package changes like (security) bug fixes.

This styleguide is currently implemented by the @arcticicestudio/eslint-config (previously eslint-config-arcticicestudio) and @arcticicestudio/eslint-config-base (previously eslint-config-arcticicestudio-base) Node packages that lived in their own repositories. The development workflow was clean using most of GitHub's awesome features like project boards, codeowner assignments, issue & PR automation and so on, but changes to one of them often required actions for the other package too since they are based on each other and they are using the same development tooling and documentation standards.

Monorepo Comparison

Actually I'm not a supporter when it comes to monorepos and next to the advantages a monorepo also comes with disadvantages:

  • No more scoped code — The developer experience with Git is clearly worse because commits can contains changes to multiple scopes of the code. Since there are only a “transparent separation” of code, that was previously located in a dedicated repository but is not aggregated into a parent (e.g. packages) with other modules, commits can now contain changes to multiple code scopes spread over the entire code base.
  • No more assignment of commits to single modules — Like described in the bullet point above, commit can contain changes to multiple modules, it is harder to detect which commit targeted a specific module.
  • Steeper learning curve for new contributors — In a dedicated repository that only hosts a specific module it is easier for new developers to contribute to the project, but in a monorepo they might need to change code in multiple places within other modules or the root code/documentation of the entire project.
  • Uniform version number — In order to keep conform to SemVer, the entire project must use a uniform version number. This means that a module that has not been changed since the last version must also be incremented in order to keep compatible with the other modules. Using different version numbers prefixed/suffixed with an individual version number is a not go, increases the maintenance overhead and and drastically reduces the project overview and quality! This would result in multiple Git tags on the main branch as well as “empty” changelogs and release notes with placeholder logs that only refer to changes of other modules.

Project Future

Even though there are disadvantages (see above), a monorepo makes sense only for specific project modules thar are slightly coupled and where using dedicated repositories only increases the maintenance overhead when changes must be reflected in multiple modules anyway.

In order to reduce the maintenance overhead both Node packages, @arcticicestudio/eslint-config (previously eslint-config-arcticicestudio) and @arcticicestudio/eslint-config-base (previously eslint-config-arcticicestudio-base), have been migrated into this repository by adapting to Yarn workspaces since they are slightly dependent on each other anyway. This simplifies the development tooling setup and allows to use a unified documentation base as well as a smoother development and testing workflow.

This change also implies that the root of the repository is now the main package for the entire project setup including shared development dependencies, tools and documentations while the packages only contains specific configurations and (dev)dependencies.

Scoped Packages

The previous eslint-config-arcticicestudio and eslint-config-arcticicestudio-base packages were no scoped packages but suffixed with -arcticicestudio*. To simplify the naming and improving the usage of user/organization specific packages both packages are now scoped to @arcticicestudio resulting in the new names @arcticicestudio/eslint-config-base and @arcticicestudio/eslint-config. They can be used through ESLint's support for shared configuration with scoped packages. The previously released public versions have been deprecated using the npm deprecate command where the provided message points out to migrate to the new scoped packages.

Versioning

The style guide itself and all packages using a shared/fixed/locked version. This helps all packages to keep in sync and ensure the compatibility with the latest style guide version.

Standard Setup

In order to keep up-to-date with the latest project setups, the tools and documentations have been integrated and updated through the following tickets:

  • #9 (⊶ 8e992407) „Git ignore and attribute pattern“ — completed ✓
  • #10 (⊶ db2a43bc) „Git mail mapping“ — completed ✓
  • #11 (⊶ 10253246) „Prettier“ — completed ✓
  • #12 (⊶ c21a58a9) „lint-staged“ — completed ✓
  • #13 (⊶ b4cac34f) „Husky“ — completed ✓
  • #14 (⊶ be122b12) „General repository and package documentations and metadata“ — completed ✓
  • #15 (⊶ c25d1efe) „GitHub issue and pull request templates“ — completed ✓

Features

GitHub issue and pull request templates — #15 (⊶ c25d1efe) ↠ Integrated GitHub's feature to define multiple issue templates while the initial template file is used as a fallback/generic template to link to the specific ones.

Read the GitHub Help article for more details about issue and pull request templates. Also check out how to manually create issue templates, a pull request template. and the guide on how to create the (deprecated) fallback/generic issue template.

Improvements

General repository and package documentations and metadata — #14 (⊶ be122b12) ↠ The previous project repository documentations were not designed for a monorepo layout and have been be updated including various badges provided by the great shields.io project.

Further documentations about the project architecture and technologies as well as guides for contributions to develop, run and maintain the project stayed within the packages itself. There are also various places that contained outdated documentations and metadata that have been updated too.

See #14 for more details about what exactly has been updated.

Tasks

Introducing remark-lint — #5 ⇄ #6 (⊶ fa9af093) ↠ Integrated remark-lint, a linter built on remark, the powerful Markdown processor powered by plugins such as remark-lint. It is used through remark-cli with remark-preset-lint-arcticicestudio, the custom preset that implements the Markdown Style Guide.

To lint all Markdown sources within the project the lint:md NPM script has been added that will be picked up by the main lint script.

Documentation for official ESLint extensible shared configurations — #7 (⊶ 57b8ce03) ↠ Added information about the official @arcticicestudio/eslint-config and @arcticicestudio/eslint-config-base extensible shared configurations for ESLint to the documentation.

Git ignore and attribute pattern — #9 (⊶ 8e992407) ↠ Added the .gitattributes and .gitignore configuration files to define the pattern.

Git mail mapping — #10 (⊶ db2a43bc) ↠ Added a Git mailmap file to link to in documentations and allow contributors to send mails regarding security issues. This prevents unnecessary overhead of updating all documents when new core team and members and contributors are added and additionally adds the main functionality of the file: Mapping commits when someone uses a different email address.

Introducing Prettier — #11 (⊶ 10253246) ↠ Integrated Prettier, the opinionated code formatter with support for many languages and integrations with most editors. It ensures that all outputted code conforms to a consistent style and provides the best and recommended style configurations of-out-the-box™. Read #11 for more details about the configuration and setup as well as included plugins.

To format all compatible sources within the project the format:pretty NPM script has been added that will be picked up by the main format script.

Introducing lint-staged — #12 (⊶ c21a58a9) ↠ Integrated lint-staged to run linters against staged Git files and prevent adding code that violates any style guide into the code base.

Read #12 for more details about the configuration and setup.

Introducing Husky — #13 (⊶ b4cac34f) ↠ Integrated Husky, the tool that make Git hooks easy and can prevent bad Git commits, pushes and more woof!

Read #13 for more details about the configuration and setup.

0.6.0

Release Date: none Milestone

Show all commits

↳ Release date of transferred eslint-config-base package: 2019-08-14

Features

Style Guide

Suggestion to use WeakMap for hidden properties — #8 ⇄ #16 (⊶ ac611f7e) ↳ Ported from airbnb/javascript#1722 (⊶ airbnb/javascript@c5411a42) ↠ Added a suggestion to the examples of the naming conventions for underscores to make properties hidden by using a WeakMap when the environment supports it. This is an alternative to just removing the underscore and making the property public.

Prefer control statements over selection operators — #8 ⇄ #16 (⊶ ac611f7e) ↳ Ported from airbnb/javascript#1729 (⊶ airbnb/javascript@c8b11641) ↠ Added a new rule to prefer control statements instead of selection operators.

Ordering for React instance variables and methods — #8 ⇄ #16 (⊶ ac611f7e) ↳ Ported from airbnb/javascript#1737 (⊶ airbnb/javascript@ff1c1217) ↠ Added a suggestions about instance variables and methods for the ordering of React component methods and properties.

UPPERCASE naming convention for constants — #8 ⇄ #16 (⊶ ac611f7e) ↳ Ported from airbnb/javascript#255 (⊶ airbnb/javascript@33819d67) ↠ Added a new section about naming conventions for constants.

Consistent whitespaces inside blocks — #8 ⇄ #16 (⊶ ac611f7e) ↳ Ported from airbnb/javascript#1798 (⊶ airbnb/javascript@edf942ee) ↠ Added a new section about consistent whitespaces inside block.

Spacing around commas — #8 ⇄ #16 (⊶ ac611f7e) ↳ Ported from airbnb/javascript#1798 (⊶ airbnb/javascript@edf942ee) ↠ Added a new section about whitespaces around commas.

Spacing inside computed properties — #8 ⇄ #16 (⊶ ac611f7e) ↳ Ported from airbnb/javascript#1798 (⊶ airbnb/javascript@edf942ee) ↠ Added a new section about whitespaces inside computed properties.

Spacing around function signatures — #8 ⇄ #16 (⊶ ac611f7e) ↳ Ported from airbnb/javascript#1798 (⊶ airbnb/javascript@edf942ee) ↠ Added a new section about whitespaces around function signatures.

Spacing inside object literal properties — #8 ⇄ #16 (⊶ ac611f7e) ↳ Ported from airbnb/javascript#1798 (⊶ airbnb/javascript@edf942ee) ↠ Added a new section about whitespaces inside object literal properties.

Trailing spaces at the end of lines — #8 ⇄ #16 (⊶ ac611f7e) ↳ Ported from airbnb/javascript#1798 (⊶ airbnb/javascript@edf942ee) ↠ Added a new section about trailing spaces at the end of lines.

Multiple empty lines — #8 ⇄ #16 (⊶ ac611f7e) ↳ Ported from airbnb/javascript#1798 (⊶ airbnb/javascript@edf942ee) ↠ Added a new section about multiple empty lines.

Unused variables — #8 ⇄ #16 (⊶ ac611f7e) ↳ Ported from airbnb/javascript#1828 (⊶ airbnb/javascript@edf942ee) ↠ Added a new section about unused variables.

Packages

@arcticicestudio/eslint-config-base

New function-call-argument-newline rule — #8 ⇄ #16 (⊶ ac611f7e) ↳ Transferred from arcticicestudio/eslint-config-arcticicestudio-base#32 ⇄ arcticicestudio/eslint-config-arcticicestudio-base#33 (⊶ arcticicestudio/eslint-config-arcticicestudio-base@e25bf80c4) ↠ Added and disabled the new function-call-argument-newline core rule introduced in ESLint version 6.2.0.

Improvements

Style Guide

Reference function-paren-newline for function signature invocation indentations — #8 ⇄ #16 (⊶ ac611f7e) ↳ Ported from airbnb/javascript#1756 (⊶ airbnb/javascript@a9fc9d8a) ↠ Added a reference for the ESLint core rule function-paren-newline to the function signature invocation indentation section.

Index as key are anti-pattern — #8 ⇄ #16 (⊶ ac611f7e) ↳ Ported from airbnb/javascript#1899 (⊶ airbnb/javascript@48448a81) ↠ Added additional information why index as key are an anti-pattern.

let or const guideline is incompatible with „destructuring“ — #8 ⇄ #16 (⊶ ac611f7e) ↳ Ported from airbnb/javascript#1927 (⊶ airbnb/javascript@9af5ee89) ↠ Added a info about assignments to the section about declaration separation to be compatible with rules about destructuring.

Reference to no-prototype-builtins rule — #8 ⇄ #16 (⊶ ac611f7e) ↳ Ported from airbnb/javascript#1929 (⊶ airbnb/javascript@924dfb26) ↠ Added a reference to the section about prototype builtins for the corresponding no-prototype-builtins rule.

Reference to react/jsx-filename-extension rule — #8 ⇄ #16 (⊶ ac611f7e) ↳ Ported from airbnb/javascript#1930 (⊶ airbnb/javascript@24da5bb5) ↠ Added a reference to the section about JSX file extension for the corresponding react/jsx-filename-extension rule.

Reference to react/no-array-index-key rule — #8 ⇄ #16 (⊶ ac611f7e) ↳ Ported from airbnb/javascript#1930 (⊶ airbnb/javascript@24da5bb5) ↠ Added a reference to the section about index as key props for the corresponding react/no-array-index-key rule.

More best practices for .bind() and arrow functions in React — #8 ⇄ #16 (⊶ ac611f7e) ↳ Ported from airbnb/javascript#2014 (⊶ airbnb/javascript@be07f7a0) ↠ Added more information and best practices in React about method binding (.bind()) and arrow functions when used within React classes like properties or in the scope of render.

Better wording for „acronyms and initialisms“ guideline — #8 ⇄ #16 (⊶ ac611f7e) ↳ Ported from airbnb/javascript#1972 (⊶ airbnb/javascript@5d25a2ee) ↠ Improved the wording in the acronyms and initialisms section by replacing capitalized with uppercased to clarify the purpose of guideline.

Packages

@arcticicestudio/eslint-config

Behavior of react/forbid-prop-types rule for array and object — #8 ⇄ #16 (⊶ ac611f7e) ↳ Ported from airbnb/javascript#1952 (⊶ airbnb/javascript@95286eb4) ↠ Added additional information about the specific behavior of the react/forbid-prop-types rule regarding array and object type.

@arcticicestudio/eslint-config-base

ESLint v6.0.0 Support — #8 ⇄ #16 (⊶ ac611f7e) ↳ Transferred from ~~arcticicestudio/eslint-config-arcticicestudio-base#30 ⇄ arcticicestudio/eslint-config-arcticicestudio-base#31 (⊶ arcticicestudio/eslint-config-arcticicestudio-base@dfee6901) ↠ ESLint v6 has been released including the official v6 migration guide. To stay up-to-date with the latest security and stability changes as well as new rules, this configuration migrated to v6 while also dropping support for v4 and lower.

Updated (dev,peer)dependencies for ESLint v6.0.0 support

To stay up-to-date with the latest security and stability changes as well as new rules, all outdated (dev,peer)dependencies have been updated.

Removed deprecated experimentalobjectrestspread option

Since ESLint v5, the parserOptions.ecmaFeatures.experimentalObjectRestSpread option was deprecated and has now been removed in v6. To ensure the feature is used the parserOptions.ecmaVersion option has been updated to use ECMAScript version 2018 which includes this syntax feature.

Added new rules and adapted to changed default values

ESLint v6 introduced new rules as well as updating default values and configurations of existing ones. The missing rules have been added while the default values have been compared and adjusted to the current configurations of this package.

Removed and replaced deprecated core rules

The following rules are deprecated and have been removed or replaced:

  • require-jsdoc and valid-jsdoc - Both rules were not maintained anymore and were disabled anyway due to too noisy output.
  • no-catch-shadow - Replaced by no-shadow

Ignore __mocks__ for import/no-extraneous-dependencies — #8 ⇄ #16 (⊶ ac611f7e) ↳ Ported from airbnb/javascript#1772 (⊶ airbnb/javascript@8720f5f9) ↠ Added the __mocks__ pattern as exception for the import/no-extraneous-dependencies rule since it should be considered as testing utils.

Underscore naming pattern for spec tests — #8 ⇄ #16 (⊶ ac611f7e) ↳ Ported from airbnb/javascript#1732 (⊶ airbnb/javascript@8c83d03a) ↠ Extended the pattern for tests named with the spec pattern when using an underscore (*_spec.js) instead of an dot (*.spec.js) for the import/no-extraneous-dependencies rule.

No dangling underscore in function names — #8 ⇄ #16 (⊶ ac611f7e) ↳ Ported from airbnb/javascript#1907 (⊶ airbnb/javascript@17e04546) ↠ Dangling underscores and not allowed for functions and are now enforced through the no-underscore-dangle rule.

Allow staticContext (React Router) for no-param-reassign — #8 ⇄ #16 (⊶ ac611f7e) ↳ Ported from airbnb/javascript#2029 (⊶ airbnb/javascript@1310ade9) ↠ Added staticContext (React Router) as exception for the no-param-reassign rule.

Switch from eslint-restricted-globals to confusing-browser-globals — #8 ⇄ #16 (⊶ ac611f7e) ↳ Ported from airbnb/javascript#1961 (⊶ airbnb/javascript@21b65e94) ↠ Switched from the superseded eslint-restricted-globals package to the new confusing-browser-globals package that is part of the official React repository, used within CRA and maintained by the React core team.

Allow jest.setup.js file name pattern for import/no-extraneous-dependencies — #8 ⇄ #16 (⊶ ac611f7e) ↳ Ported from airbnb/javascript#1998 (⊶ airbnb/javascript@96f95fa3) ↠ Added the jest.setup.js file name pattern to the exceptions of the import/no-extraneous-dependencies rule to support the general naming of Jest setup files.

Cleaner example for „array callback return“ handling — #8 ⇄ #16 (⊶ ac611f7e) ↳ Ported from airbnb/javascript#2004 (⊶ airbnb/javascript@495a62aa) ↠ Removed an unnecessary expression from the examples in the „callback return“ section for arrays.

Simplified no-mixed-operators — #8 ⇄ #16 (⊶ ac611f7e) ↳ Ported from airbnb/javascript#1864 (⊶ airbnb/javascript@f6acb789) ↠ Simplified the groups for the no-mixed-operators rule to adapt to the corresponding style guide section that has been improved and updated.

Bug Fixes

Style Guide

Updated link anchor for MDN page about let keyword — #8 ⇄ #16 (⊶ ac611f7e) ↳ Ported from airbnb/javascript#1818 (⊶ airbnb/javascript@c068d7cb) ↠ Fixed an anchor on the “Hoisting” page for a MDN link about „temporal dead zones“ of the let keyword.

Invalid link anchor for W3 page about „ARIA Roles“` keyword — #8 ⇄ #16 (⊶ ac611f7e) ↳ Ported from airbnb/javascript#1823 (⊶ airbnb/javascript@8a244801) ↠ Fixed an anchor on the React Accessibility A11Y page for a W3 link about “ARIA roles”.

Invalid example for npm has package — #8 ⇄ #16 (⊶ ac611f7e) ↳ Ported from airbnb/javascript#2062 (⊶ airbnb/javascript@030e23b1) ↠ Fixed an error in the usage example of the has package in the „Object Rest Spread“ section.

Packages

@arcticicestudio/eslint-config-base

No additional new line at end of file — #8 ⇄ #16 (⊶ ac611f7e) ↳ Ported from airbnb/javascript#1794, airbnb/javascript#2017 (⊶ airbnb/javascript@2d977990, airbnb/javascript@60b96d32) ↠ Changed the maxEOF option of the no-multiple-empty-lines rule to 0 since ESLint by default swallows the final newline, as some editors add it automatically. This prevents an additional new line at the end of files next to the default EOF handling.

0.5.0

Release Date: none Milestone

Show all commits

↳ Release date of transferred eslint-config package: 2019-08-19 ↳ Release date of transferred eslint-config-base package: 2018-11-17

Features

Packages

@arcticicestudio/eslint-config

Entry point for Prettier plugin integration — #8 ⇄ #16 (⊶ ac611f7e) ↳ Transferred from arcticicestudio/eslint-config-arcticicestudio#12 ⇄ arcticicestudio/eslint-config-arcticicestudio#15 (⊶ arcticicestudio/eslint-config-arcticicestudio@8935d75a) ↠ All projects using Prettier for a smooth and uncomplicated developer experience as well as keeping the code style consistent across own and third-party projects. Almost all projects have added the eslint-plugin-prettier plugin to run Prettier as an ESLint rule and report differences as individual ESLint issues.

Therefore a new entry point has been added that

  • enables the prettier plugin.
  • enables the prettier/prettier rule to error level in order to enable the linting output.
  • extends the official Prettier ESLint configuration from the eslint-config-prettier package to ensure the best compatibility with Prettier as well as reducing required maintenance overhead to keep up-to-date with new Prettier releases. It also extends the following shared configurations to include support for other ESLint plugins:
    • eslint-plugin-react through the shared prettier/react configuration

The new entry point is available as @arcticicestudio/eslint-config/prettier and can be composed with the default entry point to inherit the rules and include all existing integrations like for „React“ and „JSX A11Y“.

Improvements

Packages

@arcticicestudio/eslint-config

ESLint v6.0.0 Support — #8 ⇄ #16 (⊶ ac611f7e) ↳ Transferred from ~~arcticicestudio/eslint-config-arcticicestudio#13 ⇄ arcticicestudio/eslint-config-arcticicestudio#14 (⊶ arcticicestudio/eslint-config-arcticicestudio@6948a181) ↠ ESLint v6 has been released including the official v6 migration guide. To stay up-to-date with the latest security and stability changes as well as new rules, this configuration migrated to v6 while also dropping support for v4 and lower.

Updated (dev,peer)dependencies for ESLint v6.0.0 support

To stay up-to-date with the latest security and stability changes as well as new rules, all outdated (dev,peer)dependencies have been updated.

Updated React plugin settings

The version has been changed to be automatically detected by using the detect value and the pragma key has been removed since it will be handled by Babel.

Added new React and JSX A11Y plugin rules and adapted new default values

The react and jsx-a11y plugins introduced new rules as well as updating default values and configurations of existing ones. The missing rules have been added while the default values have been compared and adjusted to the current configurations of this package.

Removed deprecated plugin rules

The following rules have been deprecated and therefore removed or replaced:

@arcticicestudio/eslint-config-base

No quote-props for numbers and keywords — #8 ⇄ #16 (⊶ ac611f7e) ↳ Transferred from ~~arcticicestudio/eslint-config-arcticicestudio-base#29 (⊶ arcticicestudio/eslint-config-arcticicestudio@bbb6d35a) ↠ Disabled the keywords and numbers options of the quote-props rule. Both are not necessary anymore since this preset does not target legacy ES3 environments and disabling prevents unnecessary and noisy warnings.

0.4.0

Release Date: none Milestone

Show all commits

↳ Release date of transferred eslint-config package: 2018-11-16 ↳ Release date of transferred eslint-config-base package: 2018-11-15

Improvements

Packages

@arcticicestudio/eslint-config

Loosen JSX props ordering — #8 ⇄ #16 (⊶ ac611f7e) ↳ Transferred from ~~arcticicestudio/eslint-config-arcticicestudio#10 (⊶ arcticicestudio/eslint-config-arcticicestudio@cf8a9744) ↠ Disabled the 65 rule because it was actually too noisy and prevented the usage of useful shortcut props like outlined or loaded.

No more consistent naming validation for JSX boolean props — #8 ⇄ #16 (⊶ ac611f7e) ↳ Transferred from ~~arcticicestudio/eslint-config-arcticicestudio#11 (⊶ arcticicestudio/eslint-config-arcticicestudio@27e75c91) ↠ The callbacksLast and shorthandFirst options of the 66 rule caused multiple warnings when formatted with Prettier and conflicted with the alphabetically ordering and have therefore been disabled.

@arcticicestudio/eslint-config-base

No more JSDoc comment validation — #8 ⇄ #16 (⊶ ac611f7e) ↳ Transferred from ~~arcticicestudio/eslint-config-arcticicestudio-base#28 (⊶ arcticicestudio/eslint-config-arcticicestudio-base@eab37dd2) ↠ Disabled the valid-jsdoc core rule because it is actually too noisy and not suitable in most cases when used with JSX/React and some of the latest ES6 (or higher) features/proposals when the return type is not known. When using TypeScript or Flow the return type and parameters are typed.

0.3.0

Release Date: none Milestone

Show all commits

↳ Release date of transferred eslint-config package: 2018-05-20 ↳ Release date of transferred eslint-config-base package: 2018-05-20

Improvements

Packages

@arcticicestudio/eslint-config

Prevent SemVer Major Zero Caveat — #8 ⇄ #16 (⊶ ac611f7e) ↳ Transferred from arcticicestudio/eslint-config-arcticicestudio#8 ⇄ arcticicestudio/eslint-config-arcticicestudio#9 (⊶ arcticicestudio/eslint-config-arcticicestudio@daa1ea3e) ↠ Raised the version range for the base package to >=0.2.0 <1.0.0 in order to avoid the SemVer Major Zero Caveat.

This prevents that only the exact version specified will match. By allowing all versions <1.0.0 this package resolves to the latest development version when a new version of the base package is released without the need to manually update to the version.

@arcticicestudio/eslint-config-base

No more minimum amount of properties for object-curly-newline — #8 ⇄ #16 (⊶ ac611f7e) ↳ Transferred from arcticicestudio/eslint-config-arcticicestudio-base#26 ⇄ arcticicestudio/eslint-config-arcticicestudio-base#27 (⊶ arcticicestudio/eslint-config-arcticicestudio-base@1c4ee04b) ↠ Removed the minimum amount of properties for the object-curly-newline rule so the consistent option ensures that the style is consistent for every case.

Previously it was configured to require a line break when there are 4 or more properties within the object curly braces on the same line. This resulted in noisy errors because the names can also be very short and fit perfectly into one line e.g. when used with React prop destructuring.

Because Prettier is used in all project development workflows, the indentation is automatically handled when the length of the properties exceeds the maximum line length or reduces the readability. Therefore the decision to use a line break or not should be handled by Prettier instead of using a hard coded amount value.

This improvement also added the ImportDeclaration and ExportDeclaration configurations, introduced in ESLint version 4.18.0, to avoid different behavior when updating to this version.

0.2.0

Release Date: none Milestone

Show all commits

↳ Release date of transferred eslint-config package: 2018-05-14 ↳ Release date of transferred eslint-config-base package: 2018-05-12

Features

Packages

@arcticicestudio/eslint-config

New React rule react/jsx-max-depth — #8 ⇄ #16 (⊶ ac611f7e) ↳ Transferred from arcticicestudio/eslint-config-arcticicestudio#6 ⇄ arcticicestudio/eslint-config-arcticicestudio#7 (⊶ arcticicestudio/eslint-config-arcticicestudio@356292cd) ↠ Added new rule react/jsx-max-depth to validate the maximum JSX depth. Introduced in eslint-plugin-react version 7.7.0.

@arcticicestudio/eslint-config-base

New import rule import/no-self-import — #8 ⇄ #16 (⊶ ac611f7e) ↳ Transferred from arcticicestudio/eslint-config-arcticicestudio-base#13 ⇄ arcticicestudio/eslint-config-arcticicestudio-base#22 (⊶ arcticicestudio/eslint-config-arcticicestudio-base@ff353600) ↠ Added and enabled rule import/no-self-import to prevent a module from importing itself. Introduced in eslint-plugin-import version 2.9.0.

New import rule import/no-useless-path-segments — #8 ⇄ #16 (⊶ ac611f7e) ↳ Transferred from arcticicestudio/eslint-config-arcticicestudio-base#14 ⇄ arcticicestudio/eslint-config-arcticicestudio-base#23 (⊶ arcticicestudio/eslint-config-arcticicestudio-base@4f0744b7) ↠ Added and enabled rule import/no-useless-path-segments to prevent unnecessary path segments in import and require statements. Introduced in eslint-plugin-import version 2.9.0.

New import rule import/no-default-export — #8 ⇄ #16 (⊶ ac611f7e) ↳ Transferred from arcticicestudio/eslint-config-arcticicestudio-base#15 ⇄ arcticicestudio/eslint-config-arcticicestudio-base#24 (⊶ arcticicestudio/eslint-config-arcticicestudio-base@4b3dcdab) ↠ Added and disabled rule import/no-default-export to forbid default exports. Introduced in eslint-plugin-import version 2.9.0.

New import rule import/no-cycle — #8 ⇄ #16 (⊶ ac611f7e) ↳ Transferred from arcticicestudio/eslint-config-arcticicestudio-base#16 ⇄ arcticicestudio/eslint-config-arcticicestudio-base#25 (⊶ arcticicestudio/eslint-config-arcticicestudio-base@273430b9) ↠ Added and enabled rule import/no-cycle to prevent a module from importing a module with a dependency path back to itself. Introduced in eslint-plugin-import version 2.10.0.

Improvements

Packages

@arcticicestudio/eslint-config

New and deprecated React 16.3 lifecycle methods — #8 ⇄ #16 (⊶ ac611f7e) ↳ Transferred from arcticicestudio/eslint-config-arcticicestudio#4 ⇄ arcticicestudio/eslint-config-arcticicestudio#5 (⊶ arcticicestudio/eslint-config-arcticicestudio@0a444a20) ↠ Added the new React 16.3 lifecycle method getSnapshotBeforeUpdate and the now deprecated (“async unsafe“) lifecycle React.Component methods, prefixed with UNSAFE_, to the except methods of the class-methods-use-this core rule. Previously this resulted in a warning when no this keyword was used within the method.

New and deprecated React 16.3 lifecycle methods — #8 ⇄ #16 (⊶ ac611f7e) ↳ Transferred from ~~arcticicestudio/eslint-config-arcticicestudio#3 (⊶ arcticicestudio/eslint-config-arcticicestudio@9ea7d770) ↠ Updated to the latest base package version 0.2.0 that added support for new ESLint core and plugin rules as well as many other improvements and bug fixes.

@arcticicestudio/eslint-config-base

Import-related rule refactoring — #8 ⇄ #16 (⊶ ac611f7e) ↳ Transferred from arcticicestudio/eslint-config-arcticicestudio-base#6 ⇄ arcticicestudio/eslint-config-arcticicestudio-base#12 (⊶ arcticicestudio/eslint-config-arcticicestudio-base@8395e07d) ↠ Refactored rules related to imports that caused many style based warnings regarding ordering and sorting of import statements.

Import Order Conflict

The import/first and import/order rules were conflicting. While import/first disallowed

import "../config";
import fs from "fs"; // <-- Error: Absolute imports should come before relative imports
import App from "../App";

import/order on the other hand was fine with this as mentioned in the rule documentation:

Unassigned imports are ignored, as the order they are imported in may be important.

This has been improved by allowing unassigned imports anywhere, but still above all other non-import statements.

Also the import groups have been specified more accurate by splitting them into three main groups:

  1. builtin and external modules
  2. internal modules (e.g. if configured via webpack to handle internal paths differently)
  3. parent, sibling and index modules

These three groups must be separated by a blank line.

Import Sort Conflict

The sort-imports rule conflicted with both of the other mentioned rules described above. It is not that important how imports are sorted within groups so this rule has been disabled until there's a way to make it work regarding the compatibility with other rules.

Allow line break for arrow function implicit returns — #8 ⇄ #16 (⊶ ac611f7e) ↳ Transferred from arcticicestudio/eslint-config-arcticicestudio-base#7 ⇄ arcticicestudio/eslint-config-arcticicestudio-base#17 (⊶ arcticicestudio/eslint-config-arcticicestudio-base@fa3d6e8c) ↠ Line breaks are now allowed for implicit returns of arrow functions. Previously it was configured to enforce the implicit return statement to be beside the arrow. This prevented longer statements to be placed on the next line to improve the readability and compliance with the maximum line length. These restrictions have now been lifted.

No default case for switch block — #8 ⇄ #16 (⊶ ac611f7e) ↳ Transferred from arcticicestudio/eslint-config-arcticicestudio-base#9 ⇄ arcticicestudio/eslint-config-arcticicestudio-base#19 (⊶ arcticicestudio/eslint-config-arcticicestudio-base@1d9ad4ef) ↠ switch-case blocks no longer require a default case. The default-case rule has been disabled, because most of the time a default case is not necessary and should be handled by the developer depending on the use case and code scope.

Use line breaks after operators — #8 ⇄ #16 (⊶ ac611f7e) ↳ Transferred from arcticicestudio/eslint-config-arcticicestudio-base#10 ⇄ arcticicestudio/eslint-config-arcticicestudio-base#20 (⊶ arcticicestudio/eslint-config-arcticicestudio-base@9894f0d8) ↠ Line breaks are now placed after operators instead before them. Previously the operator-linebreak core rule was configured to enforce line breaks to be placed before operators which could lead to confusions when indenting lines because of the maximum line length. It now enforces line breaks after operators, but exceptions for the conditional (ternary) operators ? and : are configured to use line breaks before.

Gatsby configuration file pattern for devDependencies imports — #8 ⇄ #16 (⊶ ac611f7e) ↳ Transferred from arcticicestudio/eslint-config-arcticicestudio-base#11 ⇄ arcticicestudio/eslint-config-arcticicestudio-base#21 (⊶ arcticicestudio/eslint-config-arcticicestudio-base@581fd812) ↠ The import/no-extraneous-dependencies rule now allows the import of devDependencies in Gatsby configuration, currently including the following pattern:

gatsby-browser.js
gatsby-config.js
gatsby-node.js
gatsby-ssr.js

These pattern should match all of the listed files as well as new files that might possibly be added in the future.

Bug Fixes

Packages

@arcticicestudio/eslint-config-base

Consistent line break usage within function parentheses — #8 ⇄ #16 (⊶ ac611f7e) ↳ Transferred from arcticicestudio/eslint-config-arcticicestudio-base#8 ⇄ arcticicestudio/eslint-config-arcticicestudio-base#18 (⊶ arcticicestudio/eslint-config-arcticicestudio-base@f4af5ecf) ↠ Line breaks within function parentheses are now consistent. Previously the function-paren-newline core rule was configured with multiline that only allowed a line break after the opening brace when the parameter also contains a line break, otherwise it disallows any line break within the parentheses.

This was not conform with the styleguide and has been changed to the consistent option. This requires consistent usage of line breaks for each pair of parentheses. It reports an error if one parenthesis in the pair has a line break inside it and the other parenthesis does not.

Toolbox

No peer dependency installation for CI/CD builds — #8 ⇄ #16 (⊶ ac611f7e) ↳ Transferred from arcticicestudio/eslint-config-arcticicestudio-base#3 ⇄ arcticicestudio/eslint-config-arcticicestudio-base#4 (⊶ arcticicestudio/eslint-config-arcticicestudio-base@fe418ec4) ↠ The installation of peer dependencies for CI/CD build (Circle CI) has been removed from the build configuration.

It was set up to run the npx command to install the peer dependencies that is only required for users of the package, but not the package itself. The same dependencies are defined in devDependencies and therefore installed by default on npm install.

0.1.0

Release Date: 2018-01-27 Project Board Milestone

Show all commits

↳ Release date of transferred eslint-config package: 2018-02-05 ↳ Release date of transferred eslint-config-base package: 2018-02-04

Detailed information can be found in the project documentation.

Features

Style Guide

Base Rules — #1 ⇄ #2 (⊶ dee0441a) ↠ Added the initial style guide with chapters to learn about the comprehensive base rules.

Base Rules — #3 ⇄ #4 (⊶ cee71142) ↠ Added the initial style guide for React specific rules like Higher-Order Components, the component methods & properties ordering and props.

Packages

@arcticicestudio/eslint-config

Base Rules — #8 ⇄ #16 (⊶ ac611f7e) ↳ Transferred from arcticicestudio/eslint-config-arcticicestudio#1 ⇄ arcticicestudio/eslint-config-arcticicestudio#2 (⊶ arcticicestudio/eslint-config-arcticicestudio@c46bf556) ↠ Added all rules of the eslint-plugin-react and eslint-plugin-jsx-a11y plugins based on the React and Accessibility A11Y style guidelines as shareable ESLint config. More details can also be found in the initially published project documentation.

@arcticicestudio/eslint-config-base

Base Rules — #8 ⇄ #16 (⊶ ac611f7e) ↳ Transferred from arcticicestudio/eslint-config-arcticicestudio-base#1 ⇄ arcticicestudio/eslint-config-arcticicestudio-base#2 (⊶ arcticicestudio/eslint-config-arcticicestudio-base@9ba25a53) ↠ Added all ESLint core rules and eslint-plugin-import plugin rules. More details can also be found in the initially published project documentation.

Copyright © 2016-present Sven Greb

Footnotes

  1. https://github.com/svengreb/tmpl/issues/78

  2. https://github.com/svengreb/tmpl/issues/83