Change Log
All notable changes to this project will be documented in this file.
This project adheres to Semantic Versioning.
10.0.2 - 2017-04-14
Changed rules
- Relax rule: Disallow import of modules using absolute paths (import/no-absolute-path) #861
- This rule was responsible for up to 25% of the running time of
standard
, so we are disabling it until its performance improves.
10.0.1 - 2017-04-06
- Internal changes (incremented dependency versions)
10.0.0 - 2017-04-04
standard
just turned 10.0.0! 🎉
As with every new major release, there are lots of new rules in 10.0.0 designed to
help catch bugs and make programmer intent more explicit.
standard
is more popular than ever – 330,000 downloads per month! It's even
more popular – 670,000 downloads per month – if you include the
shareable ESLint config
that we also publish.
The most important change in 10.0.0 is that using deprecated Node.js APIs is now
considered an error. It's finally time to update those dusty old APIs!
Deprecated APIs are problematic because they may print warning messages in the
console in recent versions of Node.js. This often confuses users and leads to
unnecessary support tickets for project maintainers.
Some deprecated APIs are even insecure (or at least prone to incorrect usage) which
can have serious security implications. For that reason, standard
now considers
usage of Buffer(num)
to be an error, since this function returns uninitialized
program memory which could contain confidential information like passwords or keys.
Instead of Buffer(num)
, consider using Buffer.alloc(num)
or Buffer.from(obj)
which make the programmer's intent clearer. These functions exist in all currently
supported versions of Node.js, including Node.js 4.x. For more background,
see this Node.js issue.
We also improved some rules to support common patterns in code bases that use
React, JSX, and Flow.
When you upgrade, consider running standard --fix
to automatically fix some of
the issues caught by this new version.
New features
- Update ESLint from 3.15.x to 3.19.x.
- Node.js API: Add
standard.lintTextSync
method
New rules
(Estimated % of affected standard users, based on test suite in parens)
- Disallow using deprecated Node.js APIs (node/no-deprecated-api) #693 (13%)
- Ensures that code always runs without warnings on the latest versions of Node.js
- Ensures that safe Buffer methods (
Buffer.from()
, Buffer.alloc()
) are used instead of Buffer()
- Enforce callbacks always called with Node.js-style error first (standard/no-callback-literal) #623 (3%)
- Functions named
callback
or cb
must be invoked with null
, undefined
, or an Error
as the first argument
- Disallows using a string instead of an
Error
object
- Disallows confusing callbacks that do not follow the standard Node.js pattern
- Disallow any imports that come after non-import statements (import/first) #806 (1%)
- Disallow unnecessary return await (no-return-await) #695 (0%)
- Disallow comma-dangle in functions (comma-dangle) #787 (0%)
- Disallow repeated exports of names or defaults (import/export) #806 (0%)
- Disallow import of modules using absolute paths (import/no-absolute-path) #806 (0%)
- Disallow Webpack loader syntax in imports (import/no-webpack-loader-syntax) #806 (0%)
- Disallow comparing against -0 (no-compare-neg-zero) #812 (0%)
Changed rules
- Relax rule: allow using
...rest
to omit properties from an object (no-unused-vars) #800
- This is a common and useful pattern in React/JSX apps!
- Relax rule: allow Flow
import type
statements (import/no-duplicates) #599
- These are no longer considered to be "duplicate imports"
- Relax rule: Treat
process.exit()
the same as throw
in code path analysis (node/process-exit-as-throw) #699
- Makes certain other rules work better and give fewer false positives
- Relax rule: allow Unnecessary Labels (no-extra-label)
- Redundant, since "no-labels" is already enabled, which is more restrictive
9.0.2 - 2017-03-17
Changed rules
9.0.1 - 2017-03-07
Changed rules
- Relax rule: Allow mixing basic operators without parens (no-mixed-operators) #816
- Specifically, these operators:
+
, -
, *
, /
, %
, and **
9.0.0 - 2017-02-28
It's time for a new major version of standard
! As usual, this release contains a
bunch of awesomeness to help you keep your code in tip-top shape!
We've added several new rules designed to catch potential programmer errors
(i.e. bugs), as well as rules to make programmer intent more explicit in
certain circumstances.
This release continues our trend of tightening up rules so that, wherever possible,
there's one "right" way to do things. This design goal is intended to reduce the
time that teams and maintainers spend giving code review feedback in pull requests.
When you upgrade, consider running standard --fix
to automatically fix some of the
errors caught by the new rules in this version.
Note: If you use the Chai test framework, you will need to make some changes to
your tests to improve their robustness. Read about the changes you need to make.
New features
- Update ESLint from 3.10.x to 3.15.x
- 3 additional rules are now fixable with
standard --fix
New rules
(Estimated % of affected standard users, based on test suite in parens)
Changed rules
8.6.0 - 2016-11-22
- Update ESLint from 3.8.x to 3.10.x
- 3 additional rules are now fixable with
standard --fix
8.5.0 - 2016-10-25
- Update ESLint from 3.7.x to 3.8.x
- 2 additional rules are now fixable with
standard --fix
8.4.0 - 2016-10-10
- Update ESLint from 3.6.x to 3.7.x
- 5 additional rules are now fixable with
standard --fix
- Use more conservative semver ranges #654
8.3.0 - 2016-09-29
The last release (8.2.0
) added ES7 support. This release (8.3.0
) adds ES8
support ...just 3 days later!
This release should eliminate the need to specify babel-eslint
as a custom
parser, since standard
can now parse ES8 (i.e. ES2017) syntax out of the box.
That means async
and await
will just work.
- Support ES8 (i.e. ES2017) syntax.
8.2.0 - 2016-09-26
For many users, this release should eliminate the need to specify babel-eslint
as
a custom parser, since standard
can now parse ES7 (i.e. ES2016) syntax out of the
box.
- Support ES7 (i.e. ES2016) syntax.
- Update ESLint from 3.5.x to 3.6.x
- 4 additional rules are now fixable with
standard --fix
8.1.0 - 2016-09-17
- Update ESLint from 3.3.x to 3.5.x
- Around 10 additional rules are now fixable with
standard --fix
8.0.0 - 2016-08-23
This release contains a bunch of goodies, including new rules that catch potential
programmer errors (i.e. bugs) and enforce additional code consistency.
However, the best feature is surely the new --fix
command line flag to
automatically fix problems. If you ever used
standard-format
and ran into issues with the lack of ES2015+ support, you'll be happy about
--fix
.
standard --fix
is built into standard
v8.0.0 for maximum convenience, it
supports ES2015, and it's lightweight (no additional dependencies since it's part
of ESLint which powers standard
). Lots of problems are already fixable, and more
are getting added with each ESLint release.
standard
also outputs a message ("Run standard --fix
to automatically fix
some problems.") when it detects problems that can be fixed automatically so you
can save time!
With standard
v8.0.0, we are also dropping support for Node.js versions prior to
v4. Node.js 0.10 and 0.12 are in maintenance mode and will be unsupported at the
end of 2016. Node.js 4 is the current LTS version. If you are using an older
version of Node.js, we recommend upgrading to at least Node.js 4 as soon as
possible. If you are unable to upgrade to Node.js 4 or higher, then we recommend
continuing to use standard
v7.x until you are ready to upgrade Node.js.
Important: We will not be updating the standard
v7.x versions going forward.
All bug fixes and enhancements will land in standard
v8.x.
Full changelog below. Cheers!
New features
New rules
(Estimated % of affected standard users, based on test suite in parens)
Changed rules
7.1.2 - 2016-06-03
- Fix install errors for some users by updating eslint peer dependency
7.1.1 - 2016-05-26
- Add back full node 0.10, 0.12 support
7.1.0 - 2016-05-16
- Upgrade eslint to version ~2.10.2
7.0.1 - 2016-05-04
- Relax "no-duplicate-imports" rule to not include
export
so the following is allowed:
import { foo } from 'bar'
export * from 'bar'
7.0.0 - 2016-05-02
Changes
- Upgrade eslint to version ~2.9.0
- Remove "rules" configuration option #367 from
package.json
(Reasoning is here)
New rules
Estimated % of affected standard users, based on test suite
Removed rules
6.0.8 - 2016-03-07
- Pin eslint to version ~2.2.0
- Update eslint-plugin-react to version 4.0.0
6.0.7 - 2016-02-18
- Revert: Use install location of standard as eslint
cwd
(fixes #429)
6.0.6 - 2016-02-18
- Use eslint 2.1.0
- Fix: Use install location of standard as eslint
cwd
(fixes snazzy/#8)
6.0.5 - 2016-02-12
6.0.4 - 2016-02-07
6.0.3 - 2016-02-06
- Fix "Error: Cannot find module 'eslint-config-standard-jsx'" with npm 2 (node 0.10, 0.12, 4)
6.0.2 - 2016-02-06
- Internal change: Remove .eslintrc file, and use inline config
6.0.1 - 2016-02-05
- Internal change: Move .eslintrc file to root folder
6.0.0 - 2016-02-05
The goal of this release is to make standard
faster to install, and simpler to use.
Remove standard-format
(#340) (#397)
- Eliminates 250 packages, and cuts install time in half!
- For npm 2, install time goes from 20 secs —> 10 secs.
- For npm 3, install time goes from 24 secs —> 12 secs.
- To continue using
standard-format
, just install it separately: npm install -g standard-format
- JSX is still supported, and it continues to be checked for style.
- There were only a few React-specific rules, but they made it extremely difficult for users of alternatives like
virtual-dom
or deku
, and unecessarily tied standard
to a single library.
- JSX rules come from
eslint-config-standard-jsx
. The eslint-config-standard-react
dependency was removed.
New Rules
The percentage (%) of users that rule changes will effect, based on real-world testing of the top ~400 npm packages is denoted in brackets.
Removed Rules
parseInt()
radix rule because ES5 fixes this issue (#384)
(radix) [0%]
Expose eslint configuration via command line options and package.json
For power users, it might be easier to use one of these new hooks instead of forking
standard
, though that's still encouraged, too!
- Set eslint "plugins" (#386)
- Set eslint "rules" (#367)
- Set eslint "env" (#371)
To set custom ESLint plugins, rules, or envs, use the command line --plugin
, --rules
, and --env
flags.
In package.json
, use the "standard" property:
{
"standard": {
"plugins": [ "my-plugin" ]
}
}
Upgrade to ESLint v2
- There may be slight behavior changes to existing rules. When possible, we've noted these in the "New Rules" and "Removed Rules" section.
Improve test suite
- Rule changes can be tested against every package on npm. For sanity, this is limited to packages with at least 4 dependents. Around ~400 packages.
Known Issues
Relevant diffs
5.4.1 - 2015-11-16
view diff
Fixed
- Fix for
standard-engine
change. Fix error tagline.
5.4.0 - 2015-11-16
view diff
Added
- eslint-config-standard-react@1.2.0 (history)
- Disallow duplicate JSX properties
5.3.1 - 2015-09-18
view diff
Changed
- eslint-plugin-react@3.4.2 (history)
5.3.0 - 2015-09-16
view diff
Changed
- eslint-config-standard@4.4.0 (history)
- New rule: must have space after semicolon in for-loop (commit)
- New rule: No default assignment with ternary operator (commit)
- New rule: Require spaces before keywords (commit)
- eslint-config-standard-react@1.1.0 (history)
- eslint-plugin-react@3.4.0 (history)
- eslint-plugin-standard@1.3.1 (history)
5.2.2
view diff
Fixed
- We have a changelog now, and you're reading it!
- Minor README update
- Removed direct dependency on
eslint
(its now moved to standard-engine)
5.2.1 - 2015-09-03
view diff
Changed
- eslint-config-standard@4.3.1 (history)
- Revert rule: Disallow unncessary concatenation of strings
Fixed
- eslint-config-standard@4.3.1 (history)
- fix regression with ternary operator handling
5.2.0 - 2015-09-03
view diff
Added
- eslint-config-standard@4.3.0 (history)
- New rule: Disallow unncessary concatenation of strings
- New rule: Disallow duplicate name in class members
- New rule: enforce spaces inside of single line blocks
- Re-add rule: padded-blocks (Closes #170)
Changed
- Bump
eslint
from 1.1.0 to 1.3.1 (CHANGELOG)
- eslint-plugin-standard@1.3.0 (history)
- A small change to make the plugin compatible with browserify which does not affect behavior.
Fixed
- eslint-plugin-react@3.3.1 (CHANGELOG)
- Fix object rest/spread handling.
- Added white background to badge.svg to make it work with dark backgrounds (Closes #234)
- Minor updates to README.md
5.1.1 - 2015-08-28
view diff
Fixed
- Update to RULES.md to remove a missing hyperlink
- Add atom linter information to README.md
- Fixed duplicated word in the tagline message on the CLI
- Removed failing repository from tests (yoshuawuyts/initialize)
5.1.0 - 2015-08-14
view diff
Fixed
- eslint-config-standard@4.1.0 (history)
- eslint-plugin-react@3.2.2 (CHANGELOG)
- Fix crash when propTypes don't have any parent
- Fix jsx-no-literals reporting errors outside JSX
Changed
- Bump eslint from 1.0.0 to 1.2.0 (CHANGELOG)
- Added more test repositories and disabled some that were failing
- Update bikeshedding link on README.md
5.0.2 - 2015-08-06
view diff
Changed
- eslint-config-standard-react@1.0.4 (history)
- Disable Rule: react/wrap-multilines
- Minor README updates
5.0.1 - 2015-08-05
view diff
5.0.0 - 2015-08-03
view diff
4.5.4 - 2015-07-13
view diff
4.5.3 - 2015-07-10
view diff
4.5.2 - 2015-07-02
view diff
4.5.1 - 2015-06-30
view diff
4.5.0 - 2015-06-30
view diff
4.4.1 - 2015-06-29
view diff
4.4.0 - 2015-06-27
view diff
4.3.3 - 2015-06-26
view diff
4.3.2 - 2015-06-23
view diff
4.3.1 - 2015-06-18
view diff
4.3.0 - 2015-06-16
view diff
4.2.1 - 2015-06-12
view diff
4.2.0 - 2015-06-11
view diff
4.1.1 - 2015-06-11
view diff
4.1.0 - 2015-06-10
view diff
4.0.1 - 2015-06-01
view diff
4.0.0 - 2015-05-30
view diff