This changelog only lists notable changes. Major version are always breaking, although in a few edge cases minor versions could be too. Both are listed here. Check individual releases (tags) and their commits to see unlisted changes.
A fix was added since gulp-eslint
is abandoned, and resulted in an ESLint config conflict. The default .eslintrc
config now has been updated.
If your project is using a custom config, please add or update the following rules:
{
"parser": "@babel/eslint-parser",
"parserOptions": {
"ecmaVersion": "latest",
"requireConfigFile": false
}
}
All dependencies were updated, and the following breaking changes are introduced:
- The minimum Node.js version is now 14.18; all packages were tested with the latest LTS (Node.js 18).
- The
engines
restriction is removed from thepackage.json
, allowing for easier future usage without actively updating this package. - Stylelint was updated. Update your config if: your project uses a custom config (
.stylelintrc
), and your project is using a parsing language (e.g. Sass with SCSS syntax). See below for config adjustments. - An update to gulp-svgstore will now transfer presentation attributes from original icons root to a wrapping group (
<svg>
to<g>
). See below for instructions.
If you're using a custom .stylelintrc
, add following to your configuration (given that you're using Sass with SCSS syntax):
"overrides": [
{
"files": ["*.scss", "**/*.scss"],
"customSyntax": "postcss-scss"
}
]
If you're using the icons
tasks to generate an icon SVG sheet, make sure to verify your icons.
Previously presentation attributes on the <svg>
were dropped, now they're transferred to a wrapping <g>
.
For example: if there's a fill="none"
on the parent <svg>
, this will now be copied, while previously one might've only removed them on <path>
s. In this case it would render the icons transparent if a fill was set via CSS.
- We've moved away from
sass-lint
in favor ofstylelint
, since the former is no longer supported. Note that anysass-lint:ignore
rules you might have used in current projects won't work anymore! - We've started to use Prettier at GRRR. This means the default RC files for
eslint
andstylelint
will extend from Prettier. If you don't want to use Prettier, you can create your own lint config files, they will be picked up in favor of the defaults.
Due to an upgrade of gulp-imagemin
to v7.0.0, this package now requires at least version 10 of Node.js.
The Modernizr.picture
test was removed from the defaults, allowing for a custom Modernizr task config if customization is needed.
To revert the removeal of the Modernizr.picture
default, add the following task in gulp.json
:
"modernizr": {
"options": [
"addTest",
"setClasses"
],
"tests": [
"picture"
]
}
Browserify was replaced by Rollup, due to its focus on ESM instead of CommonJS.
Note: this might be a breaking change to some projects, since having both ESM imports and CommonJS requires in the same file is not allowed anymore. In this case some JavaScript files might have to be refactored.
This...
require("./polyfills/array-from");
... becomes:
import "./polyfills/array-from";
Uglify was replaced by Terser, since it supports ES6+ natively and uglify-es
is no longer maintained.
Uglify was re-added for the javascript:build
task in non-development.
Gulp was upgraded to v4.0.0
and the tasks were refactored accordingly.
The old way of specifying the Browsersync proxy is deprecated in favour of adding it via an environment variable (BROWSERSYNC_PROXY
).
This...
"app": {
"domain": "localhost.<something>.com",
"port": 443
},
... is replaced with an entry in a .env
file:
BROWSERSYNC_PROXY=localhost.<something>.com
To load the .env
from somewhere else than the root, specify it in the gulp.json
:
"dotenv": {
"file": "../../.env"
},
The package is renamed from grrr-gulpfile
to @grrr/gulpfile
. Update all references in your package.json
to node_modules/@grrr/gulpfile/gulpfile.js
.
Babel has deprecated some packages, and has a new naming structure. This means that host packages need to be updated. See the migration guide.
This...
"plugins": [
"plugin-transform-object-rest-spread"
],
"presets": [
[
"preset-env", {}
]
]
... becomes:
"plugins": [
"@babel/plugin-proposal-object-rest-spread"
],
"presets": [
[
"@babel/preset-env", {}
]
]
There are two seperate Babel config entries, and two bundle output entries. This means you can have a main.js
file for evergreen browsers, alongside a main-legacy.js
file which will serve older browsers. Additionally really old browser can be served a no-js
version of the website.
Uglify doesn't work wel with ES6 syntax, and gulp-uglify
gave errors when running with newer JavaScript syntax (eg. async functions). Since all files should be served with gzip
(or some newer form of compression) anyhow, this shouldn't hurt much.
A future release might add something like babel-minify.
Changed the way paths are listed in the revisioned manifest JSON file:
"main.js": "main-52d31ea9cb.js",
"base.css": "base-26102c538a.css"
now becomes:
"scripts/modernizr.js": "scripts/modernizr-e8731e5942.js",
"styles/base.css": "styles/base-26102c538a.css"
Initial release.
Hello world.