Skip to content
This repository has been archived by the owner on Mar 23, 2024. It is now read-only.

2.1.1

Compare
Choose a tag to compare
@markelog markelog released this 26 Aug 17:54
· 558 commits to master since this release

Version 2.1.1

Overview

This release consists mostly of bug-fixes. Check them out – there are a lot of them!

We also managed to squeeze two new rules - requireSpacesInsideParenthesizedExpression and disallowSpacesInsideParenthesizedExpression, increase performance, and improve ES6 support.

Fix regarding global jscs installs and plugins

One of the biggest issues fixed: a global jscs install can finally load local extensions (à la gulp style) like error-filters, plugins, additional rules, and presets.

This will fix issues with using a custom preset with something like SublimeLinter which uses the global jscs install.

  • To make a custom preset, you need to publish a npm package with a jscs config file
  • We recommend the package name starts with jscs-preset- or with jscs-config- to help with searching for presets on npm and defining it in your config
  • This would allow you to specify your preset more succinctly: ”preset”: “awesome” instead of ”preset”: “jscs-preset-awesome”
  • You can also share multiple presets in one package with ”preset”: “awesome/super-awesome”, provided that you have super-awesome.{json, js} in your package root directory
  • Create a jscs.json file to store your jscs config
  • In your package.json, set the main field to jscs.json
// example package.json in `jscs-config-awesome`
{
  “name”: “jscs-config-awesome”,
  “version”: “1.0.0,
  “main”: “jscs.json”
}

// example .jscsrc using a custom preset
// assuming the preset package name is `jscs-config-awesome`
{
  “preset”: “awesome”,
  “disallowEmptyBlocks”: false // example of disabling a preset rule with false
}

We will add more comprehensive documentation for this feature a bit later, so stay tuned.

Disable a rule with false or null

You can use false (instead of only null) to disable a rule (such as in a preset). This was a point of confusion for newer users. To disable a rule you can do:

{
  “preset”: “airbnb”,
  “disallowEmptyBlocks”: null // disabling a rule with null
  “disallowSpacesInCallExpression”: false // disabling a rule with false
}

New Rules

  • New Rule: SpacesInsideParenthesizedExpression (Richard Gibson)

Enhancements

  • Configuration: disable any rule if its value equals to "false” (Oleg Gaidarenko)

Bug Fixes

  • requireDollarBeforejQueryAssignment: Ignore destructuring assignment (Simen Bekkhus)
  • validateIdentation: fix on empty switch blocks (Henry Zhu)
  • disallowQuotedKeysInObjects: fix allowing quoted non-reserved keys (Alexej Yaroshevich)
  • disallowParenthesesAroundArrowParam: allow destructuring of param (Henry Zhu)
  • requireTrailingComma: correct error message (monk-time)
  • requirePaddingNewLinesAfterBlocks: do not report arrow fn chaining (Oleg Gaidarenko)
  • safeContextKeyword: miss destructuring assignment (Oleg Gaidarenko)
  • disallowNodeTypes: correct configure error (Alexander Zeilmann)
  • requireDollarBeforejQueryAssignment: Ignore destructuring assignment (Simen Bekkhus)
  • paddingNewlinesInBlocks: add exceptions and open/close options (Kai Cataldo)
  • requireSpacesInAnonymousFunctionExpression: add allExcept option (Ken Sheedlo)
  • curlyBraces: support for..of statements (regseb)

Misc

  • Configuration: allow load of external entities from external preset (Oleg Gaidarenko)
  • CLI:Configuration: load local jscs modules if present (Oleg Gaidarenko)
  • JsFile: Improve getNodeByRange performance (Richard Gibson)
  • disallowQuotedKeysInObjects: rework tests and deprecate allButReserved value (Alexej Yaroshevich)

Docs

  • Docs: update examples on how to disable (Oleg Gaidarenko)
  • Docs: improve documentation for various rules (oredi)
  • Docs: fix typos in examples for disallowSpaceAfterObjectKeys (Yoni Medoff)
  • Docs: improve documentation for various rules (oredi)
  • Docs: small changelog corrections (Oleg Gaidarenko)
  • Docs: make it clearer node_modules is excluded, and ! can be used to include (Henry Zhu)