- Updated Vite
- Fixed case when the virtual file doesn't have
stat
property and/or meta doesn't havelang
- Updated dependencies
- Added Texy! Typography module into initial configuration
- New Data/Collections layout - opt-in via
html.data.collections
instead ofhtml.collections
. Collections are then accessible viacollections
global property in Nunjucks templates, to prevent collisions with properties defined inglobal.mjs
- Introduced new
page
global property in Nunjucks templates, that holds metadata about template and page. Inspired by 11ty https://www.11ty.dev/docs/data-eleventy-supplied/#page-variable - esbuild default target is ES2024
- Updated dependencies
- Use
{MarkedExtension[]} html.markedExtensions
also ingenerate-json
task.
- Added Texy! Typography module for usage as marked extension and as a Nunjucks filter
processTypography(locale)
- Added
{MarkedExtension[]} html.markedExtensions
configuration option to allow the use of marked extensions
- Updated dependencies
- Updated npm ignore file
- Updated dependencies
- Updated to Vite.js 6
- Removed Sass from
stylesheets
pipeline. If you need Sass, usegulp-sass
viastylesheets.alternateTask
. - Removed BrowserSync in favor of Vite.js. If you need BrowserSync, use it as Vite plugin.
- Removed WorkBox. We will provide separate package with WorkBoxRegistry, that can be used via
additionalTasks
. - Removed
gulp-notify
dependency. - Cleaned and pinned dependencies, so the overall package size after installation is much smaller (>50% reduction).
gulp-mode
is now resolved just once and injected into Registries for later use.- Path config is in
mjs
instead of JSON. JSON config is still supported, but migration to ESM encouraged. - Support for
mjs
collection files for injection into HTML or generators input. Support for JSON is kept, but ESM is favored. - Added
posthtml
step for additional tasks - Added
import-wp
task for import of WordPress Posts and Pages - Sensible layout template a CSS styles for modern web development
- fix
cloudflare.mjs
file name
- static files are copied after reving
- fixed cases when there are more tasks in
prebuild
andpostbuild
additional tasks. They are run in series. - added optional
CloudflareRegistry
withcloudflare-pages
task, it bahaves likestatic
task, but can be included inprebuild
stage
- explicitly transform nested CSS declarations to flat selectors
- fix ESM watching
- bumped dependencies
- propagate gulp exit code from blendid bin script
- Improved error handling in HTML task
- Added ability to resolve Workbox src path lazily
- Bumped dependencies
- Unquote parameters of custom CSS functions
- Fixed Cloudinary upload from the root without destination folder
- Improved initial steps in Readme
- Improved default site assets to be more useful and working OOTB
- Updated dependencies
- Parse all CSS functions parameters as JSON, otherwise strings are double-quoted, and we can't use unquoted strings because it breaks Sass parser.
- Fix optional
opts
in CSS functions
- Added custom CSS functions
asset-url
andcloudinary-url
, they shoud do the same thing as Sass functionsassetUrl
andcloudinaryUrl
, but they use JSON string for options instead of Sass Maps, so it doesn't break the parser. Sass and Sass functions will be removed (extracted to opt-in module) in version 9, so it is recommended to transition to the new functions.
- Revert custom functions - because of breaking change in unsupported Sass maps.
- Implement custom CSS functions in PostCSS instead of Sass
- Fixed optional sprite usage in the HTML task
- Fixed rev exlude option path
- Fixed reving of static files like favicon.ico or robots.txt that need to be unreved
- Added option to exclude files from reving via
production.rev.exclude
option - When sprites are disabled do not create a pipeline for them
- Added
_headers
file with cache busting of reved assets - Added
robots.txt
file
- Allow change setting of
markdownToJSON
ingenerate.json
settings
- Switched from
sass-embedded
tosass
, it was hanging the build process on Cloudflare Pages CI - removed
gulp-rename
as is not needed -gulp-sass
already renames the output file - Added default merge options for generate JSON collections - by default it will create an array of objects from parsed MD files with front matter
- cleanup marked usage from transitional settings
- Fixed broken
init
andinit-config
tasks (changed behavior ofsrc
in Gulp v5) - updated dependencies
- requires Node 22
- updated dependencies
- uses
with
instead ofassert
in JSON imports
- fixed HTML generator to generate file for each item in the collection
- updated dependencies
- changed order of the
static
files task (moved to second place after clean) - updated caniuse-lite
- rev JS uses esm path config prior to esbuild
- fix error in sizereport
- all binary handling tasks have disabled encoding
- Updated Sass Embedded to 1.74.1
- Fixed fonts task changing encoding of font files
- Updated Vite to 5.2.8
- removed
cloudinaryUrl
debug logging - fixed HTML generator NPE
- added debugging ability to every task
- fixed globs/ignores
- added type hints to registries
- Requires Node 21
- Gulp v5
- updated dependencies
- bumped dependencies
- Sass
pkg:
specifier is now supported, See official blog post for more details
- updated dependencies to latest versions
- fix native streams of JSON in generators
- updated Changelog
- cleanup files from npm package
- removed deprecated code
- use native node stream utilities instead of dependencies
- updated dependencies
- removed
javascripts
functionality based on Rollup in favour ofesbuild
- moved to Gulp Registries and ESM
- deprecated global based APIs for extending the Blendid functionality in favor of Registries
- support for ESM based configuration
- introduced Vite.js for HMR
- introduced esbuild based workflow for ESM code
- moved to
postcss-preset-env
- cleaned up shims for different backend frameworks
- updated to Gulp v4
- introduced support for
collections
- introduced
generate
functionality based on collections - introduced
cloudinary
functionality - moved to
sass-embedded
- relatively references directories and files within init task
- hotfix: ensures new
fancy-log
package does not break tasks
- Prevent browserSync.server.middleware from being overwritten completely
- reorganizes production and replace file tasks to ensure public directory is cleaned on build task
- replaces outdated gulp-util with appropriate packages
- Hotfix for HTTP/2 upgrade task
- Adds an HTTP/2 assets upgrade by running
yarn run blendid -- http2-upgrade
- Updates extras to include HTTP/2 init files
- Update dependencies, including Webpack 3
- Adds Drupal init task
- Readme updates
- Allow manually specifying the files that the
clean
task will delete via aclean.patterns
option
- Add
devtool
,uglifyJsPlugin
, anddefinePlugin
environment options - Autoset
uglifyJsPlugin.sourceMap
totrue
ifproduction.devtool
is defined - Add
publicPath
to Craft task-config.js #432
- add watchOptions to browserSync config #429
- Gulp Starter is now Blendid!
- Now a standalone yarn/npm installable module 🎉
- Tasks and modules are fully configurable through task-config.js
- Paths are fully configuraable through path-config.json
- Update all dependencies to latest, including Webpack 2
- HTML and CSS tasks can be swapped out with alternative custom tasks
- Changed default Sass files from
.sass
to.scss
😭 - Custom gulp tasks can be added and run prebuild, postbuild, in development or production builds
- Renames javascripts
entries
option toentry
to match Webpack config - Removes Karma, Mocha, Sinon, Chai Test Suite. Jest is better and easy to set up. Use that instead.
init
task generates default config files and folder structureinit-craft
andinit-rails
tasks generate config files, helpers, and asset folder structures for their environments.- So much more... see the README
- In task-config.js,
javascripts.entries
was renamedjavascript.entry
to be consistent with Webpack. - You are no longer requried to provide
extensions
in each task config, or really any non-default configuration. If you want to use default settings in any task configuration, simply set the value totrue
. If you pass a configuration object, those settings will be merged with the defaults. - Check the README for other new configuration options.
This was the previous iteration of this project. Gulp Starter was not an installable package, and was more of an example starter kit that you could fork, clone, and copy into your project. The last iteration of this work is archived in the gulp-starter branch of this repo.
See the blog post that started it all: https://www.viget.com/articles/gulp-browserify-starter-faq