Releases: stamat/poops
Release list
v1.2.1
404.html page support
Full Changelog: v1.2.0...v1.2.1
v1.2.0
Markup
- Refactored for maintainability
- Added Liquid template engine support alongside Nunjucks via engine adapters
- New filters:
srcset, inline SVG,concat,push - New extensions:
image(with SVG support),googleFonts, Highlight.js code highlighting - Full-text search indexer with stop-word filtering
- Fixed collection async issue; skip unpublished pages; load data from directories
Styles
- Design token support — import JSON design tokens (W3C DTCG & Style Dictionary) directly into SCSS via
sass-token-importer
PostCSS
- New
postcssmodule with Tailwind CSS support
React SSG
- Renamed to
reactorand moved to its own module
Dev Server
- Exposed to local network
- Error catching for compile watchers
CLI & Logging
- Unified
logutility; addedprintstyleandargoyledependencies - Replaced
momentwithdayjs
Full Changelog: v1.1.0...v1.2.0
v1.1.0
Release Notes (1.1.0)
Breaking Changes
- CommonJS to ESM migration — The entire codebase has been converted from CommonJS to ES modules. This aligns with modern Node.js conventions and enables native ESM features throughout.
Bug Fixes
- Sass resolver: underscore partial resolution and main path detection — Fixed bugs and published it as a separate package sass-path-resolver. Read the README.md for supported import path formats.
- Non-blocking compiler execution — Each compiler (styles, scripts, markups, copy) now runs in its own try/catch. A failure in one no longer blocks the others from executing.
- Script build error handling —
compileEntrynow returns early after a failed esbuild build, preventing a secondary crash fromfileSize()on a non-existent output file. - Markup options guard —
this.config.markup.optionsis now safely defaulted to{}, preventing crashes when the config has nooptionsproperty. buildTimerounding — Replaced.toFixed(0)(which rounds) withMath.floor(which truncates).3500msnow correctly displays as3s 500msinstead of4s 500ms. Nothing runs in seconds still...fileSizeMB tier — Fixed the MB remainder to display in KB instead of raw bytes. Didn't bundle anything larger than a MB.pathForFiledotfile matching — Switched from regex topath.extname()so dotfiles like.gitignoreare no longer misidentified as having extensions.minimatchdependency — Fixed minimatch dependency version conflict via overrides.- Deprecated API cleanup — Replaced
rmDirSyncwithrmSync, updated tsconfigmoduleResolutionfromnodetobundler.
Features
- JSX and TSX bundling —
.jsxand.tsxfiles are now first-class citizens in thescriptspipeline. esbuild handles JSX natively, so no extra configuration is needed. Supports both classic (React.createElement) and automatic JSX runtime via thejsxoption. - React SSG (Static Site Generation) — New
ssgconfig section renders React components to HTML at build time usingrenderToString, then bundles a client entry for hydration. Pages load with pre-rendered content instead of an empty<div>. SSG runs after Styles but before Scripts and Markups in the pipeline. In watch mode, JSX/TSX changes trigger SSG re-rendering followed by a markup recompile. Poops itself does not needreact/react-domas a dependency — they are resolved from the project'snode_modules. - Extended glob support —
convertGlobToRegexnow supports**(globstar),?(),*(),+(),@(), and!()(negation) extglob patterns. Copy paths in the config can now use patterns like!(vendor)/*.js. Extracted the convertor to the new version of book-of-spells to simplify the poops codebase. - Sass resolver extracted — The custom sass import resolver has been extracted from
styles.jsinto its own module sass-path-resolver, making it independently testable and reusable as a package. - Livereload and server info ordering — Server and livereload info is now printed after the initial build, so it's always visible regardless of build warnings.
- Livereload and watcher refactoring —
setupLiveReloadServerandsetupWatchersextracted from the main function for better readability and maintainability.
Testing
- Jest test suite — Configured Jest with native ESM support (
--experimental-vm-modules). - Helpers tests — 87 tests covering all exported helper functions: path utilities, directory operations, output path builders, time/size formatting, banner templates, data file reading, front matter parsing, glob-to-regex conversion, and path matching.
- Tests excluded from published package via
!lib/**/__tests__/in thefilesfield.
Housekeeping
- Migrated ESLint config from
.eslintrc.ymlto flat config (eslint.config.js) with neostandard. - Renamed
removeDirNavWildcardstostripDirNavSegmentsfor accuracy. - Removed duplicate guard in Markups constructor.
- Updated README with extglob examples in the copy configuration section.
Full Changelog: v1.0.20...v1.1.0
v1.0.20
Copy functionality, improved custom style path resolver, improved post category detection and other minor polish
Full Changelog: v1.0.19...v1.0.20
v1.0.19
Includes fixes for style path resolver which is custom built. Style path resolver wasn't working for import paths in configuration.
Full Changelog: v1.0.18...v1.0.19
v1.0.18
Collection autodiscovery, no need to specify it in the config any longer. This also gave me an idea on how to do tags and categories, but this will be in some future releases. Also fixed where the script was failing when no markup config was provided
Full Changelog: v1.0.17...v1.0.18
v1.0.17
Now Poops can be used as a static blog generator, support added for custom collections, PAGINATION, and RSS, ATOM and JSON feed generation. Relative paths for in directory hosting solution.
Full Changelog: v1.0.16...v1.0.17
v1.0.16
Support for markdown
Full Changelog: v1.0.15...v1.0.16
v1.0.15
Front Matter support for static pages
What's Changed
- Bump esbuild from 0.18.17 to 0.19.3 by @dependabot in #13
- Bump glob from 10.3.3 to 10.3.4 by @dependabot in #11
- Bump yaml from 2.3.1 to 2.3.2 by @dependabot in #7
Full Changelog: v1.0.14...v1.0.15
v1.0.14
eslint is now used to minify css and js. Fixed an issue when minify is set to false
What's Changed
- Bump sass from 1.64.1 to 1.64.2 by @dependabot in #6
New Contributors
- @dependabot made their first contribution in #6
Full Changelog: v1.0.13...v1.0.14