Releases: swissquote/crafty
[1.13.5] Small bugfix
Bugfixes
- Fix path to babel runtime in case of transpiled generators
- Change Terser configuration to preserve PURE comments when minifying (useful for libraries)
Internal
- Separate Github Actions for Documentation Generation and Continuous Integration
- Clean some old TODOs and integration tests specifics
Updates
- @babel/* to 7.12.*
- Jest to 26.5.3
- css-loader to 5.0.0
- postcss-loader to 4.0.4
- rollup-plugin-typescript2 to 0.28.0
- ts-loader to 8.0.5
- rollup to 2.32.0
- eslint-config-prettier to 6.13.0
- eslint-plugin-react to 7.21.4
- react/react-dom to 16.14.0
[1.13.4] Small bugfix
- Improve ESLint plugin finding patching for multiple ESLint versions
- Update to ESLint 7.11.0
[1.13.3] Small bugfix
- Fix watch mode startup
- Update and fix documentation theme
[1.13.2] Small bugfix
Fix runtime detection in babel configuration in case the package doesn't have dependencies
[1.13.1] Failed release
Please ignore this
[1.13.0] TypeScript 4, ESLint 7, lots of improvements
Highlights
- Upgraded to TypeScript 4.
- Upgraded to ESLint 7, including some configuration improvements.
- Fixed a bug with node_modules imports in Jest.
- Removed Enzyme from
crafty-preset-react
. - TypeScript files are now run through Babel for all three current runners. (only Webpack was doing it before)
- Treat
@babel/runtime
as an external dependency to reduce bundle sizes. @swissquote/rollup-plugin-eslint
replacesrollup-plugin-eslint
.- Extract Terser options into
@swissquote/crafty-preset-terser
.
TypeScript 4
TypeScript 4 is out and brings a lot of new features like Variadic Tuple Types, Labeled Tuple Elements and inference of types from constructor types.
All runners have been updated to support those features.
For more details you can check their release notes : https://devblogs.microsoft.com/typescript/announcing-typescript-4-0/
ESLint 7 and configuration improvements
ESLint 7 has been released and while it changes a lot internally and in the way it's configured.
Crafty's upgrade does all the heavy lifting for you.
For more information you can check their release notes : https://eslint.org/blog/2020/05/eslint-v7.0.0-released
Some configuration improvements
- Fix
typescript-eslint/naming-convention
configuration; shouldn't report any false positives anymore. - Add
eslint-plugin-react-hooks
to our ESLint preset. The official rules for React Hooks, should help catch some gotchas in your React Hooks. - A newer version of
eslint-plugin-react
was making too many false positives injsx-handler-names
and it has been disabled while we investigate the matter.
Jest module imports bugfix
A configuration mistake in Jest broke module resolution sometimes, this has now been fixed and module resolution should be more reliable now.
If you had a workaround like this in your crafty.config.js
:
jest(crafty, options) {
options.moduleDirectories.push("node_modules");
}
You can now remove it safely
Removed Enzyme from crafty-preset-react
It's used by only few people and making it work with multiple versions of React makes it's not worth it to keep around.
TypeScript files are now run through Babel for all three current runners
When using crafty-preset-typescript
with the gulp
and rollup
runner, compilation will also go through Babel (Webpack already did the same). This makes it easier to add optimization for all cases.
Treat @babel/runtime
as an external dependency to reduce bundle sizes
When compiling with Babel, some code has to be added to files (to handle default imports, class creations, destructuring ...)
If you compile using the gulp or Rollup runners (meant for libraries) These pieces of code are better left outside of your codebase, since re-declaring exactly the same snippets of code for each module or even file, can become big very fast.
Now, if you add @babel/runtime
as a dependency to your project. Crafty will automatically keep these snippets external to your codebase.
This way it is the job of the final project to import all helpers and it can do a better job at de-duplicating them.
You can override this behaviour with the inlineRuntime
option for your bundles.
Defaults to true
when nothing is specified, and to false
when a dependency to @babel/runtime
is found.
@swissquote/rollup-plugin-eslint
replaces rollup-plugin-eslint
This plugin is a fork of rollup-plugin-eslint with a few differences
- It's compatible with ESLint 7
- Linting is done on all files and a single report is printed at the end of the run
this allows to lint all files and not fail after the first one.
Extract Terser options into @swissquote/crafty-preset-terser
Options for Terser were duplicated and scattered accross multiple files.
These options are now moved to a separate preset, and the uglifyJS
option has been renamed to terser
.
Updates
ESLint related updates
- eslint from 6.8.0 to 7.10.0
- @typescript-eslint/eslint-plugin from 3.6.0 to 4.4.0
- @typescript-eslint/parser from 3.6.0 to 4.4.0
- gulp-eslint replaced with gulp-eslint7
- eslint-config-prettier from 6.11.0 to 6.12.0
- eslint-import-resolver-typescript from 2.0.0 to 2.3.0
- eslint-plugin-import from 2.22.0 to 2.22.1
- eslint-plugin-react from 7.20.3 to 7.21.3
Rollup related updates
- @rollup/plugin-commonjs from 13.0.1 to 15.1.0
- @rollup/plugin-node-resolve from 8.4.0 to 9.0.0
- rollup from 2.21.0 to 2.28.2
- rollup-plugin-babel replaced with @rollup/plugin-babel
- rollup-plugin-terser from 6.1.0 to 7.0.2
- rollup-plugin-typescript2 from 0.27.1 to 0.27.3
Webpack related updates
- mini-css-extract-plugin from 0.9.0 to 0.12.0
- fork-ts-checker-webpack-plugin from 4.1.6 to 5.2.0
- terser-webpack-plugin from 3.0.6 to 4.2.3
- webpack from 4.43.0 to 4.44.2
- webpack-chain from 6.5.0 to 6.5.1
- webpack-merge from 5.0.9 to 5.2.0
- style-loader from 1.2.1 to 1.3.0
- ts-loader from 8.0.0 to 8.0.4
PostCSS Related updates
- browserslist from 4.13.0 to 4.14.5
- css-loader from 3.6.0 to 4.3.0
- postcss from 7.0.32 to 7.0.35
- postcss-loader from 3.0.0 to 4.0.3
- postcss-selector-parser from 6.0.2 to 6.0.4
Other updates
- babel from 7.10.* to 7.11.*
- jest from 26.1.0 to 26.5.2
- gulp-terser from 1.2.0 to 1.4.0
- enhanced-resolve from 4.2.0 to 5.2.0
- find-up from ^4.0.0 to ^5.0.0
- react-hot-loader from 4.12.21 to 4.13.0
- stylelint from 13.6.1 to 13.7.2
- ts-jest from 26.1.2 to 26.4.1
- typescript from 3.9.6 to 4.0.3
- undertaker from 1.2.1 to 1.3.0
- yargs-parser from ^18.0.0 to ^20.0.0
Internal
- Replace Lerna with oao
- Replace
glob-watcher
with an inlined, up-to-date, version
[1.12.0] Jest 26, TypeScript 3.9, Babel 7.10, Browser list update
Highlights
- Change default list of supported browsers to
> 0.25%, Edge >= 17, Safari >= 11, iOS >= 11, Chrome >= 66, Firefox >= 60, IE >= 11, not op_mini all
- New
crafty browsers
command ton know for which browsers you compile - Jest 26
- TypeScript 3.9
- Babel 7.10
Browser list update
With the recent update of the list of supported browsers at Swissquote we are now updating our tooling to reflect that.
With that change comes a new crafty command, that shows the current resolved configuration and what browsers it includes :
❯ crafty browsers
[17:20:44] Starting Crafty 1.12.0...
Your browserslist query:
'> 0.25%, Edge >= 17, Safari >= 11, iOS >= 11, Chrome >= 66, Firefox >= 60, IE >= 11, not op_mini all'
Contains 63 browsers covering 93.08% of global usage.
Chrome for Android 81
UC Browser for Android 12.12
Chrome 83, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 49
Edge 83, 81, 80, 79, 18, 17
Firefox 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60
IE 11
iOS Safari 13.4-13.5, 13.3, 13.2, 13.0-13.1, 12.2-12.4, 12.0-12.1, 11.3-11.4, 11.0-11.2
Opera 68
Safari 13.1, 13, 12.1, 12, 11.1, 11
Samsung Internet 11.1-11.2, 4
This should help fine tune your queries and debug if you aren't sure what browsers should be supported. Note that the browserslist 'your_browserlist'
command is similar, however it gives less information.
Updates
Package | from | to |
---|---|---|
autoprefixer | 9.7.6 | 9.8.5 |
@babel/* | 7.9.* | 7.10.* |
browserslist | 4.11.1 | 4.13.0 |
css-loader | 3.5.2 | 3.6.0 |
enhanced-resolve | 4.1.1 | 4.2.0 |
eslint-config-prettier | 6.10.1 | 6.11.0 |
eslint-loader | 4.0.0 | 4.0.2 |
eslint-plugin-import | 2.20.2 | 2.22.0 |
eslint-plugin-react | 7.19.0 | 7.20.3 |
fork-ts-checker-webpack-plugin | 4.1.3 | 4.1.6 |
gulp-svgmin | 2.2.0 | 3.0.0 |
inspectpack | 4.4.0 | 4.5.2 |
jest | 25.3.0 | 26.1.0 |
postcss | 7.0.27 | 7.0.32 |
postcss-color-hex-alpha | 5.0.3 | 6.0.0 |
postcss-color-rebeccapurple | 5.0.0 | 6.0.0 |
postcss-font-family-system-ui | 4.2.0 | 4.3.0 |
postcss-nested | 4.2.1 | 4.2.3 |
postcss-scss | 2.0.0 | 2.1.1 |
postcss-value-parser | 4.0.3 | 4.1.0 |
react-hot-loader | 4.12.20 | 4.12.21 |
@rollup/plugin-commonjs | 11.1.0 | 13.0.1 |
@rollup/plugin-json | 4.0.2 | 4.1.0 |
@rollup/plugin-node-resolve | 7.1.3 | 8.4.0 |
rollup | 2.6.1 | 2.21.0 |
rollup-plugin-terser | 5.3.0 | 6.1.0 |
rollup-plugin-typescript2 | 0.27.0 | 0.27.1 |
style-loader | 1.1.3 | 1.2.1 |
stylelint | 13.3.2 | 13.6.1 |
stylelint-scss | 13.17.0 | 13.18.0 |
terser-webpack-plugin | 2.3.5 | 3.0.6 |
through2 | ^3.0.0 | ^4.0.0 |
tmp | 0.1.0 | 0.2.1 |
ts-jest | 25.3.1 | 26.1.2 |
ts-loader | 6.2.2 | 8.0.0 |
typescript | 3.8.3 | 2.9.6 |
@typescript-eslint/eslint-plugin | 2.28.0 | 3.6.0 |
webpack | 4.42.1 | 4.43.0 |
webpack-chain | 6.4.0 | 6.5.0 |
webpack-dev-server | 3.10.3 | 3.11.0 |
webpack-merge | 4.2.2 | 5.0.9 |
[1.11.1] Fix linting
Highlights
- Linting bugfixes
- Remove
eslintReactVersion
settting
Linting bugfixes
- Using
jsLint --preset format
did not work correctly with ES2015+ - Using
jsLint --preset recommended --preset node
did not parse TypeScript correctly. - Add eslint-config-prettier 6.10.1 to disable all prettier-related rules automatically
- Add eslint-import-resolver-typescript 2.0.0 to disable all rules handled by TypeScript
Remove eslintReactVersion
from crafty.config.js
use detect
as React's version in eslint-plugin-react
, can still be overriden with the eslint
configuration
Package Updates
- Update jest to
25.3.0
- Update @babel/* to
7.9.5
- Update eslint-loader to
4.0.0
- Update css-loader to
3.5.2
- Update stylelint to
13.3.2
- Update fork-ts-checker-webpack-plugin to
4.1.3
- Update rollup-plugin-typescript2 to
0.27.0
- Update @rollup/plugin-commonjs to
11.1.0
- Update @rollup/plugin-node-resolve to
7.1.3
- Update rollup to
2.6.1
- Update mkdirp to
1.0.4
- Update autoprefixer to
9.7.6
- Update browserslist to
4.11.1
- Update stylelint-scss to
3.17.0
- Update @typescript-eslint/eslint-plugin to
2.28.0
- Update eslint-plugin-import
2.20.2
- Update eslint-plugin-prettier
3.1.3
Rollup 2, TypeScript 3.8, Jest 25, Other updates
Highlights
- Update to Jest 25.2
- Update to TypeScript 3.8.3
- Update to Rollup 2.2.0
- Update to Babel 7.9
Jest 25
https://jestjs.io/blog/2020/01/21/jest-25
TypeScript 3.8
https://devblogs.microsoft.com/typescript/announcing-typescript-3-8/
Rollup 2.2.0
https://github.com/rollup/rollup/releases/tag/v2.0.0
Babel 7.9
https://babeljs.io/blog/2020/03/16/7.9.0
Disabled no-explicit-any
for typescript
This rule can be annoying and we mostly ignore it because it's a warning, we trust you to use it responsibly.
Updates
Dependency | Old | Now |
---|---|---|
jest | 24.9.0 | 25.2.3 |
@babel/* | 7.8.3 | 7.9.4 |
babel-loader | 8.0.6 | 8.1.0 |
babel-preset-jest | 24.9.0 | 25.2.1 |
rollup-plugin-babel | 4.3.3 | 4.4.0 |
gulp-imagemin | 7.0.0 | 7.1.0 |
postcss | 7.0.26 | 7.0.27 |
stylelint | 13.0.0 | 13.2.1 |
webpack | 4.41.5 | 4.42.1 |
react-hot-loader | 4.12.18 | 4.12.20 |
react-test-renderer | 16.12.0 | 16.13.1 |
fork-ts-checker-webpack-plugin | 3.1.1 | 4.1.2 |
rollup-plugin-typescript2 | 0.25.3 | 0.26.0 |
ts-jest | 24.3.0 | 25.2.1 |
ts-loader | 6.2.1 | 6.2.2 |
typescript | 3.7.5 | 3.8.3 |
@rollup/plugin-commonjs | 11.0.1 | 11.0.2 |
@rollup/plugin-json | 4.0.1 | 4.0.2 |
@rollup/plugin-node-resolve | 7.0.0 | 7.1.1 |
@rollup/plugin-replace | 2.3.0 | 2.3.1 |
rollup | 1.29.1 | 2.2.0 |
rollup-plugin-terser | 5.2.0 | 5.3.0 |
inspectpack | 4.3.1 | 4.4.0 |
mkdirp | 0.5.1 | 1.0.3 |
terser-webpack-plugin | 2.3.2 | 2.3.5 |
webpack-chain | 6.3.0 | 6.4.0 |
webpack-dev-server | 3.10.1 | 3.10.3 |
browserslist | 4.8.5 | 4.11.0 |
yargs-parser | ^16 | ^18 |
@typescript-eslint/* | 2.17.0 | 2.25.0 |
babel-eslint | 10.0.3 | 10.1.0 |
eslint-plugin-import | 2.20.0 | 2.20.1 |
eslint-plugin-react | 7.18.0 | 7.19.0 |
autoprefixer | 9.7.4 | 9.7.5 |
postcss-advanced-variables | 3.0.0 | 3.0.1 |
postcss-calc | 7.0.1 | 7.0.2 |
postcss-color-rebeccapurple | 4.0.1 | 5.0.0 |
postcss-color-rgba-fallback | 3.0.0 | 4.0.0 |
postcss-value-parser | 4.0.2 | 4.0.3 |
stylelint-scss | 3.13.0 | 3.16.0 |
Dependencies updates and small fixes
Highlights
- Allow to use Crafty's ESLint integration as a global tool
- Webpack configuration improvements
- Drop Node 8 support
ESLint module resolver patch
The node module resolution used by ESLint depends on finding modules in the current working directory.
If used within a GitHub hook, or similar, it won't work. We are currently patching ESLint to allow this to work. With the hope to be able to remove it once ESLint offers more configuration options for global modules
Webpack options changes
- Automatically exclude the dist folder from watch, to avoid compilation loops
- Allow to change the host for the devServer
- Read the port from the configuration for the devServer in case it was changed by a preset
- Set the publicPath only if it wasn't defined yet
Drop Node 8 support
Since node 8 isn't supported anymore and many of our dependencies dropped it; we are dropping the support as well.
Internal
- Replace Dependabot with Renovate
- Remove most of the builds from Travis, use Github Actions instead
Dependency Replacement
rollup-plugin-commonjs
replaced with@rollup/plugin-commonjs
rollup-plugin-json
replaced with@rollup/plugin-json
rollup-plugin-node-resolve
replaced with@rollup/plugin-node-resolve
rollup-plugin-replace
replaced with@rollup/plugin-replace
Dependency Updates
- node to
>=10.0.0
@babel/*
from 7.7.5 to 7.8.3autoprefixer
from 9.7.3 to 9.7.4babel-plugin-istanbul
from 5.2.0 to 6.0.0browserslist
from 4.8.2 to 4.8.5case-sensitive-paths-webpack-plugin
from 2.2.0 to 2.3.0css-loader
from 3.3.2 to 3.4.2enzyme-adapter-react-16
from 1.15.1 to 1.15.2enzyme
from 3.10.0 to 3.11.0eslint
from 6.7.2 to 6.8.0eslint-plugin-import
from 2.19.1 to 2.20.0eslint-plugin-prettier
from 3.1.1 to 3.1.2eslint-plugin-react
from 7.17.0 to 7.18.0execa
from 3.2.0 to 4.0.0gulp-imagemin
from 6.2.0 to 7.0.0inspectpack
from 4.2.2 to 4.3.1mini-css-extract-plugin
from 0.8.0 to 0.9.0postcss-font-family-system-ui
from 4.1.1 to 4.2.0postcss
from 7.0.24 to 7.0.26rollup
from 1.27.12 to 1.29.1rollup-plugin-pnp-resolve
from ^1.0.1 to ^2.0.0rollup-plugin-terser
from 5.1.3 to 5.2.0stylelint
from 12.0.0 to 13.0.0stylelint-prettier
from 1.1.1 to 1.1.2style-loader
from 1.0.1 to 1.1.3terser-webpack-plugin
from 2.3.0 to 2.3.2ts-jest
from 24.2.0 to 24.3.0@typescript-eslint/*
from 2.11.0 to 2.17.0typescript
from 3.7.3 to 3.7.5typescript
from 3.7.3 to 3.7.5webpack-chain
from 6.0.0 to 6.3.0webpack-dev-server
from 3.9.0 to 3.10.1webpack
from 4.41.2 to 4.41.5xml2js
from 0.4.22 to 0.4.23