All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project try to adheres to Semantic Versioning, but not always is possible (due the use of unstable features from Deno). Any BREAKING CHANGE between minor versions will be documented here in upper case.
1.15.3 - 2023-02-20
- New hook
markdownIt
to modify theMarkdownIt
instance directly. - New option
lastmod
to the sitemap plugin #369. It accepts astring
with the key of the variable (by default isdate
), or a custom function to get the date from the page data. - New option
ui.processTerm
topagefind
plugin.
inline
plugin: handlewidth
andheight
attributes of inlined SVG files.- Updated dependencies:
std
,preact
,sass
,terser
,esbuild
,imagemagick
,mdx
,lighningcss
,liquid
,postcss-nesting
,pagefind
.
1.15.2 - 2023-02-02
- Property
inheritData
for components #364. - Support for import maps in the deno.json file.
- Improved the
multilanguage
plugin:- Languages versions stored in different files are better handled.
- Removed the root key of the page language.
- Updated dependencies:
std
,esbuild
,eta
,postcss-nesting
,terser
,pagefind
.
1.15.1 - 2023-01-14
- Support for
body
filters to Liquid.
--unstable
flag requirement forlume init
.- Error with
npm
specifiers inlume init
#359. - Updated dependencies:
std
,esbuild
,eta
.
1.15.0 - 2023-01-10
- Archetypes, that allows to create templates used when creating new content #337.
- New plugin
tailwindcss
#344. - Third argument to
site.data()
to customize the data path #339. - Improved the
relations
plugin:- You can configure the key used to save the relations with
relationKey
. - You can configure the key used to save the multiple relations with
pluralRelationKey
.
- You can configure the key used to save the relations with
- New hook
postcss
to modify theProcessor
instance in a low level way. - You can change the
type:og
in lume and default is website #348.
denosass
library has been replaced with @lumeland/sass NPM package (the same code as official NPM Sass package, but with a couple of tweaks to make it work on Deno).- BREAKING: The plugin
relations
accepts an object instead of an array to configure the foreign keys://Before: foreignKeys: { post: ["post_id", "id"] } // Before foreignKeys: { post: { foreignKey: "post_id", idKey: "id" }, }
- BREAKING: The plugin
date
loadsdate-fns
dependency fromnpm:
. The locales must be loaded from npm. For example:import gl from "npm:date-fns/locale/gl/index.js"; import pt from "npm:date-fns/locale/pt/index.js"; //... site.use(date({ locales: { gl, pt } }))
- The
task.ts
file, used in the previous version of deno task.
- Updated dependencies:
pagefind
,std
,cliffy
,esbuild
,liquidjs
,date-fns
,lightningcss
,postcss
. - Source map with paths with spaces #341.
- HTML charset on
reload
andnot_found
middlewares #342. lume run
wasn't receiving the argument name properly #346.- Reload the Deno cache after upgrading Lume #340, #343.
esbuild
loading for some specifiers defined in the import map.
1.14.2 - 2022-12-15
Deno.spawn
was removed in Deno 1.29 #338.- Updated dependencies:
std
,esbuild
,mdx
.
1.14.1 - 2022-12-13
- A bug in
site.processAll()
andsite.preprocessAll()
causes all pages are processed #323. - Updated
liquidjs
custom tags code. - Updated dependencies:
cliffy
,esbuild
,katex
,liquidjs
,markdown-it-attrs
,postcss
,postcss-import
.
1.14.0 - 2022-12-12
- Implemented
hooks
#329.addMarkdownItPlugin(plugin, options)
addMarkdownItRule(name, rule)
addPostcssPlugin(plugin)
addEsbuildPlugin(plugin)
addNunjucksPlugin(name, fn)
- New
components
option to MDX plugin. - New plugin
filter_pages
#254. - Added
translations
option forpagefind
plugin. - New functions
site.processAll()
andsite.preprocessAll()
to (pre)process all pages at the same time #327. - A couple of improvements to
metas
plugin:-
It's no longer needed to manually define the
mergedKeys
_data value. The plugin does it. -
The
defaultPageData
option is deprecated #321. Use data aliases instead, that also supports subkeys. For example:title: This is the title intro: text: Page description metas: title: "=title" # Alias to the title value description: "=intro.text" # Alias to the intro.text value
-
- The
<!DOCTYPE html>
declaration is added automatically to HTML pages if the Doctype is missing #334.
languages
option ofprism
plugin. Now you need to import the languages fromnpm
.
- Updated dependencies:
pagefind
,std
,terser
,postcss-import
,lightningcss
,liquid
. - MDX renderer must return a JSX object instead of a string.
- Removed hardcode configuration of tags merging.
- URL of the pages processed by
esbuild
whensplitting
is enabled #323.
1.13.2 - 2022-11-30
- Property
pages
toafterRender
event, with all rendered pages. splitting
support for theesbuild
plugin #323.- Filters are available as a global variable in Pug #320, #328.
- Relative urls from page generators #324.
- Nunjucks cache in Windows.
- Updated dependencies:
std
,esbuild
,deno_dom
,pagefind
,lightningcss
,markdown-it
,postcss
,preact
,svgo
,terser
.
1.13.1 - 2022-11-22
- The
Page.isHtml
property added in v1.13.0.
- Updated the dependencies:
std
,minify_html
,sheetjs
. - Updated
highlight.js
types. - Updated
liquid
types. - Updated
terser
types. - Import
lightningcss
from npm. - Load a fixed version of
prism
to avoid deno.lock errors. - Live reload: use
wss://
protocol underhttps://
#316. - Some Nunjucks template caches not cleaned after changes in watch mode.
1.13.0 - 2022-11-16
- New
mdx
plugin. - New
sitemap
plugin #287. - New method
Server.stop()
to close the local server #296. - New option
emptyDest
to configure whether the dest folder must be emptied before build #308. - The
src
property of pages and folders includes now theslug
value #278. - New
Page.isHtml
property that returns whether the page is HTML. - New
Page.outputPath
property that returns the output path of the page (formely `page.dest.path + page.dest.ext). - New option
returnPageData
to thesearch
plugin #251. - New middleware
www
#280. - The plugin
relations
allows to customize the id key per type. - The
multilanguage
plugin detects two different pages as language versions of the same page if the source file ends by_[lang]
#301. For example/about-me.md
(default language),/about-me_pt.md
and/about-me_it.md
. - New option
excludeSelectors
topagefind
plugin.
- The file names starting with
[number]_
no longer are parsed as dates. For example14455_full.jpg
. In previous versions, Lume interpret14455
as a timestamp to create a Date and remove the prefix to output the file asfull.jpg
#284. - The plugin
search
ignores the page 404 #299. - For better compatibility,
postcss
and its plugins are loaded fromnpm:
specifiers. - The
Page.dest
andPage.updateDest
properties are deprecated. If you want to change the destination of a page, simply update thePage.data.url
value. - JSX plugin now provides a jsx-runtime import to type
SX.IntrinsicElements
.
react_runtime
andpreact_runtime
dependencies.no-html-extension
option forprettyUrl
configuration. To have the same functionality, disable the pretty urls and use themodify_urls
plugin to remove the.html
extension to the links.
- Removed typo in
jsx_preact
, allowingcomp
function to execute properly #295. - The data cascade merging was refactored and simplified.
- Types of Nunjucks.
- Updated dependencies:
std
,esbuild
,pagefind
,liquid
,preact
,cliffy
,nunjucks
,lightningcss
. - The requirement of the
--unstable
flag forinit
.
1.12.1 - 2022-10-15
- Show build duration and number of generated files #283.
- New option
defaultPageData
to themetas
plugin #286. - Support for CJK characters by the
slugify_url
plugin #291, #292. beforeRender
event has thepages
property with the list of pages that will be rendered.
- Don't show
pagefind
output if everything is OK. deno task lume
uses stdin evaluation. This allows to add more Deno flags to configure permissions, lock files, etc #293.
- Export the
Options
interface forkatex
plugin. git created
andgit last modified
date values use the creation or modification time as fallback when the page wasn't added to the git history.relations
plugin has been refactored to better support rendering order and autogenerated pages #285.- Removed the
onlyData
option (it's always true) - Sort multiple relations by id
- Removed the
- Date value in remote pages #288.
- Updated dependencies:
std
,esbuild
,cliffy
,preact
.
1.12.0 - 2022-10-03
- New plugin
katex
#260. - New plugin
pagefind
#253. - New plugin
sheets
#252. - New plugin
remark
to use this library as markdown renderer #267. - New plugin
source_maps
to generate the source maps of processed assets (CSS and JS) #274. - Allow to load remote configuration files.
For example:
lume --config="https://example.com/_config.ts
. - Improvements to the plugin
imagick
: - The
date
field of the pages accepts more formats #272:- Any IS0 8601 representation
git created
to get the date of the file's first commit.git last modified
to get the date of the latest's first commit.
- Minimum version of Deno is 1.25.4.
- In the build mode, in order to prevent some timers to keep the process alive indefinitely and after waiting 10 seconds, exit from the Deno process with a
Deno.exit(0)
. site.pages
,site.files
andsite.onDemandPages
are readonly properties. This allows to use their reference anywhere.- Lume throws an exception if the
import_map.json
file doesn't contain thelume/
import. (Previously it only showed a warning). - When a processor returns
false
, the page is removed from the output. - Moved some dependencies to
npm:
imports. - Removed
cli/utils.ts
file and move all utils tocore/utils.ts
.
- BREAKING CHANGE:
parcel_css
plugin was removed (it was a temporary alias to thelightningcss
plugin). - The
--root
option in the CLI interface. - Warning when different versions of Lume are being used.
- Removed the
lume vendor
command temporarily because it doesn't work in all cases. I'll consider reintroduce it again when the support fornpm:
modules is implemented. - All
sourceMap
option of plugins likeesbuild
,sass
,postcss
, etc. Use the newsource_maps
plugin to configure the source maps generation in an unique place.
- New type
DeepPartial
to fix some plugins options with nested objects. - Updated deps:
std
,esbuild
,lightningcss
,sass
,postcss_autoprefixer
,minify_html
. - When Lume edit the
import_map.json
file (after runningupgrade
orimport-map
commands), any specifier using a lume url is updated. Previously, only thelume/
specifier was updated. Procesor
return type.- Repeated suffixes added to the images by the
Imagick
plugin #269. - Correct typo in invalid date error message #271.
inline
plugin creates empyclass
andid
attributes to SVGs #276.
1.11.4 - 2022-09-18
- Markdown
rules
configuration #259.
1.11.3 - 2022-09-16
- Missing option
preflight
towindi_css
plugin (enabled by default).
- Improved the live reload performance. Now the browser refresh faster and all changes are detected. In previous versions the browser didn't reload always if many pages were updated at the same time.
- Relative urls to images for the
metas
plugin #255. - Upgrade notification must be shown only on build.
- Upgrade command in the upgrade notification.
- Upgrade dependencies:
std
,cliffy
,postcss_autoprefixer
,deno_dom
,lightningcss
.
1.11.2 - 2022-09-12
lume init
configures JSX automatically on installjsx
orjsx_preact
plugins.
- Pages are rendered in two separated steps: page rendering and layout rendering. This allows to modify the page data before render the layouts (for example adding a TOC).
- Renamed
parcel_css
plugin tolightningcss
. For backward compatibility,parcel_css
is keept as an alias oflightningcss
, but will be removed in Lume 1.12.0. - Some improvements in
esbuild
plugin:- The
esbuild_deno_loader
was removed because it wasn't updated and didn't work well. It has been replaced by a new loader, more simple and reliable. - Detect automatically the JSX configuration from the
deno.json
file. Now it works fine with jsx transformers.
- The
- Updated deps:
esbuild
,std
,parcel_css
,cliffy
,postcss_autoprefixer
. - The list of available plugins on
lume init
.
1.11.1 - 2022-09-02
jsx
andjsx_preact
plugins when the children prop is a string.
1.11.0 - 2022-09-01
- New plugin
minify_html
#248. - New plugin
multilanguage
, to create pages of different languages #205. - New plugin
relations
, to create automatic relations between pages, similar to relational database (using id, type and foreign keys). - New plugin
jsx_preact
, to use Preact instead of React. - New plugin
windi_css
, to use Windi CSS framework #247. - Enabled the plugin
on_demand
, allowing to generate pages dynamically on Deno Deploy. - New function
site.cacheFile()
. - New function
site.component()
to register components directly #250. - New function
site.root()
, similar tosite.src()
andsite.dest()
but returns the path relative to the cwd. - New property
site.onDemandPages
with an array of pages that must be generated on demand. - New filter
data
, provided by thesearch
plugin, to return theData
objects of the pages, instead the fullPage
instance. - New
stopWords
option to theslugify_urls
plugin #243. - New
each
option to thepaginate
plugin. - New middleware
basic_auth
#249.
- The minimum Deno version supported is
1.24.0
. - The paginate helper returns an array with the pages instead of a generator. This makes it more easy to work with, like inspect and modify the values #241.
lume upgrade
upgrades lume locally by default (editing the import_map.json file). Runlume upgrade --global
to update it globally (withdeno install
).
/plugins.ts
module. It makes no sense.- The ability to pass arguments to Deno after
--
. Examplelume -s -- --compact
. Use a deno task to customize how Lume is executed by Deno.
- Updated dependencies:
std
,deno_dom
,liquid
,parcel_css
,prism
,autoprefixer
. - Added the
content-type
headers of pages generated on demand. - File paths added to
watcher.ignore
were not checked correctly. inline
plugin does not respect additional style tag attributes #246.
1.10.4 - 2022-08-14
- New variable
page.data.page
pointing to the page instance #240.
- Make
Renderer.preparePage()
public, so it can be used by some plugins.
- Improved
isPlainObject()
return type. - Revert change introduced in
1.10.2
related with when preprocessors are applied to autogenerated pages #239
1.10.3 - 2022-08-12
- Improved
PaginateResult
type to support Index Signatureunknown
#234. - Improved
Paginator
type generic. - Fixed
expired
middleware to remove the charset from theContent-Type
header #233. - Updated
std
dependencies.
1.10.2 - 2022-08-11
- New option
rules
to markdown plugin #218. - A second argument to processors with the array of all pages. This allows to dynamically add or remove pages from a preprocessor.
- New function
Reader.saveCache()
to cache a file manually. - Warning when empty files are skipped #221, #180
- Added partial support for
deno.jsonc
files #229. - New interfaces
PageData
andPageHelpers
for better user TypeScript experience #228. - New argument
--global
tolume upgrade
to upgrade Lume globally (withdeno install
or locally (only updating theimport_map.json
file). For backward compatibility, this argument istrue
by default. To upgrade locally, runlume upgrade --global=false
. redirect
middleware can detect also full urls, not only pathnames.- JSX plugin can render text files (like markdown). This allows to emulate mdx (combining jsx and md template engines for the same file).
- Preprocessors assigned to page generators are executed before the new pages are generated (previously they were executed after generating them). This shouldn't be a BREAKING CHANGE, unless you're doing something very weird.
- Changed SASS library to binyamin/deno-sass, that uses dart-sass and improved source map support #227.
- Updated dependencies:
std
,liquid
,deno_dom
,esbuild
,parcel_css
,cliffy
,postcss
. - Improved
isPlainObject()
util function. - Search improvements:
- Numeric arguments passed to
search.pages()
are converted to numbers. For examplesearch.pages("foo=34")
, the34
value is converted to number (previously it was a string) - Values with quotes are treated as strings. For example:
search.pages("foo='34'")
, the34
value is a string.
- Numeric arguments passed to
- If a HTML document is missing
<!DOCTYPE html>
, it's automatically added to the document withdocumentToString
#223.
1.10.1 - 2022-07-15
- New event
beforeRender
triggered after loading the pages but before preprocess and render them. - New
/init.ts
script to initialize Lume in a folder without install it, withdeno run -A https://deno.land/x/lume/init.ts
. - New property
generator
to metas plugin #215.
- Parcel Plugin should add a source-mapping comment #207.
- Updated dependencies:
std
,deno_dom
,parcel_css
,imagick
,liquid
,highlight.js
,esbuild
. - Ignore
deno.jsonc
file by default #209. - Ignored files starting with
.
or_
in directories copied statically (withsite.copy()
). - Copy static files starting with
.
or_
if they are are explicit in the config file #210. - Suppress the update notice on
lume upgrade
#206. - Error when a JSX page returns a string #214.
1.10.0 - 2022-06-16
- New
site.remoteFiles()
function to specify remote fallbacks for missing local files. The main goal is to build a theme system for Lume. - New
lume vendor
command, to save all external modules in the_vendor
folder. _components
folder can be placed in any subdirectory. Like_data
, this makes the components available only for these directories and subdirectories.- New task
lume
, to rundeno task lume
. This deprecates thebuild
andserve
tasks (they will be removed probably at some point). The idea is all Lume commands to be executed from a single point (exampledeno task lume --serve
) which makes it more portable without install anything. - Pages with the
url
variable set tofalse
are not exported. - New event type
afterStartServer
dispatched after the local server starts (withlume -s
orlume --serve
arguments).
- The tasks generated by Lume in
deno.json
no longer include the Lume url but get it fromimport_map.json
. This prevents issues caused by having two different Lume versions and make more easy to change the Lume version, because only need to edit theimport_map.json
file. - BREAKING: The asset pages (those loaded with
site.loadAssets()
) aren't rendered any more #203. - Use
std/encoding/front_matter
to extract the front matter values.
components.directory
option. It's always_components
.
- Internal refactors related with components and formats.
- Updated dependencies:
std
,esbuild
,imagemagick
,parcel_css
,terser
,postcss_autoprefixer
,react
. lume upgrade
must updatedeno.json
andimport_map.json
files even if the latest version is already installed.- Used
std/media_types
in theinline
plugin with support for much more content types. - Pollution in the
page.data
property after rendering. - Error in nunjucks using the
comp
block tag without arguments. - Ensure
netlify_cms
local server starts only if the local serve starts. - Don't copy static files when
afterRender
orbeforeSave
events returnfalse
. merge
util override default values withundefined
values.- CSS reload error when the styles contain a
@import
to a different origin. - Links to directory index files in the 404 default page.
- Wrap the
code_highlight
plugin execution in a try/catch, to avoid exit on error.
1.9.1 - 2022-05-26
- Improved the
esbuild
plugin:- Use deno_loader plugin by default.
- Detect the import map file automatically (from
deno.json
file).
watcher.ignore
option accepts functions.- New value
robots
formetas
plugin #202.
- BREAKING: Removed
bundle
plugin becauseDeno.emit()
was removed in Deno.
- Imagick plugin with custom urls #197.
- Improved
site.src()
andsite.dest()
on Windows. - Improved text truncation of
metas
plugin. - Ignore
.DS_Store
files by default. - Updated dependencies:
std
,deno_dom
,parcel_css
.
1.9.0 - 2022-05-16
- Ability to extract the Date from the directory path, not only filename #198.
site.copy()
now accepts an array of file extensions to copy. For example:site.copy([".jpg", ".png"])
.site.copy()
accepts a function as second argument to fine tuning the output file name. For example:site.copy("assets", (file) => "/dir" + file)
and also with extensions:site.copy([".jpeg"], (file) => file.replace(".jpeg", ".jpg"))
- Support for GitHub HTML server style #193.
- The
prettyUrls
option allowsno-html-extension
value to use the same url resolution as GitHub #193.
- The
imagick
plugin has thecache
option enabled by default. - BREAKING: The asset pages (those loaded with
site.loadAssets()
) won't render thelayout
variable. This is something that you probably always wanted. For example after defining a defaultlayout
in a_data.yml
file, this value was used also for assets like.css
or.jpg
files, and the only way to prevent this is creating another_data.yml
file inside these files' directory withlayout: null
. With this change, this is no longer required, andlayout
is applied only for pages loaded withsite.loadPages()
. - Simplify code: Merged
engines.ts
intorenderer.ts
class.
- Live reload with unicode characters in the path.
- Updated
std
,postcss_autoprefixer
parcel_css
,cliffy
,deno_dom
andesbuild
dependencies.
1.8.0 - 2022-05-06
- New plugin
metas
to add automatically<meta>
tags for SEO and social networks #188. - New plugin
prism
to use this library as code highligher #187. - New function
search.values()
to return an array of all unique values of a key #191. - New option
cache
toimagick
plugin to cache the transformed images in the_cache
folder #184. - Middewares have a third argument with the connection info.
- Support for nested components in Nunjucks using body helpers #189.
site.ignore()
now supports functions #53.site.ignore()
affects to static files copied withsite.copy()
. This allows to copy a entire directory withsite.copy("statics")
but ignoring some subdirectories withsite.ignore("statics/ignored-folder")
.- The
afterBuild
andafterUpdate
events have thestaticFiles
property with info about the static files that have been copied. - New property
site.files
containing all static files to be copied. It's likesite.pages
but for static files.
- Use posix path style everywhere is possible on Windows.
- Inline plugin generates invalid javascript #192.
- Updated
parcel_css
,cliffy
,react
,markdown_it
,liquid
,std
,esbuild
,postcss
,postcss_autoprefixer
andpug
. - Improved testing using Deno snapshots #190.
- Live reload files with search or hash strings.
- Live reload files with cache busting path prefixes.
- Improved the
printError
function to print SASS errors properly #194. - Added an empty last line when generating
import_map.json
anddeno.json
files. - Changed the
serve
task generation indeno.json
to meet the changes introduced in Deno 1.21.2 denoland/deno/issues/14459 - Support relative path value in "lume" key in import map #196.
1.7.4 - 2022-04-18
- If the
date
variable of the pages is astring
ornumber
, it's converted toDate
automatically #181.
- _data files exporting an array with one element was incorrectly detected as a object.
- _data files in Windows were incorrectly merged.
- Updated
std
,denosass
,cliffy
,imagick
andesbuild
. afterRender
event must stop the build if any listener returnsfalse
.- After running a
lume upgrade
, thedeno.json
andimport_map.json
files are updated accordingly #182.
1.7.3 - 2022-04-11
- New option
--version
tolume upgrade
, to upgrade to a specific version. - The
bundler
plugin detects automatically the import map file fromdeno.json
.
- Simplified
lume init
command:- Doesn't ask for the import style. Always use
import lume from "lume/mod.ts"
. - Doesn't ask whether create a import map file. It's created always.
- Doesn't ask for the import style. Always use
- Simplified
import_map.json
file generation: Onlylume/
import is added.lume
andhttps://deno.land/x/lume/
are removed.
- Updated
std
,esbuild
,deno_dom
,deno_graph
,parcel-css
,highlight.js
,terser
andreact
. - Improved Lume warnings.
1.7.2 - 2022-03-28
- The
date
plugin accepts an array of locales (ex:["en", "gl", "pt", "es"]
), that are loaded automatically.
lume/plugins/date/locale
import from the import_map.
- Throw an exception on missing configuration for Netlify CMS in the
netlify_cms
plugin. - Fixed the
expires
middleware for0
values. - Live reload works offline.
- Updated
deno_graph
andstd
.
1.7.1 - 2022-03-20
- Task creation in the
deno.json
file.
1.7.0 - 2022-03-20
- New plugin
imagick
. - New plugin
netlify_cms
. - New
expires
middleware to add theExpires
header to responses. - New
cache_busting
middleware to include the assets version identifier in the path. - New
redirects
middleware to configure custom redirects. - New
mergedKeys
data key to configure how some keys will be merged. lume/plugins/date/locale
bare import to the import_map.- The
lume import-map
command creates adeno.json
file (in addition toimport_map.json
) to automatically link the import map to Deno, meaning that you no longer need to specify the import map file in the command line (lume -- --import-map=import_map.json
) because it's automatically detected. - The
deno.json
file not only includes theimportMap
key with the "import_map.json" value but also a couple of tasks (build and serve) to run Lume using Deno tasks (deno task build
anddeno task serve
).
- Updated minimum Deno version supported to
1.20.1
. - The
inline
plugin adds theid
andclass
attributes from the removed<img>
to the inlined<svg>
.
- The VS Code configuration in
lume init
. You can use adeno.json
file with theimportMap
key. - The
--file
option tolume import-map
.
- Updated
std
,esbuild
,postcss
,parcel_css
andliquid
. lume import-map
doesn't update the lume version.- Improved
_data
reloading in watching mode. - Refactor of components due Deno's bug with
console.log()
. deno.json
file detection.
1.6.4 - 2022-03-02
- Updated urls from
https://lumeland.github.io
tohttps://lume.land
#175. - Fixed url in the VS Code configuration generation #175.
- Updated
std
,postcss
,liquid
andparcel_css
to the latest version.
1.6.3 - 2022-03-01
- The loader argument of
site.loadData()
is optional and usetextLoader
by default.
- Default targets to
parcel_css
plugin.
1.6.2 - 2022-02-23
- CSS live reload error with
<style>
. - Updated
deno_graph
,liquidjs
andparcel_css
. - The file watcher ignores the
.DS_Store
files (macOS).
1.6.1 - 2022-02-23
- Added default targets to
parcel_css
plugin (the most recent version of every browser).
- CSS Live reload error checking cross-origin
@import
.
1.6.0 - 2022-02-21
- New plugin
sass
. - New option
languages
tocodeHighlight
plugin #169.
- Use
std/http
modules to create the local server. - The page data is passed to Markdown engine as an env variable. This allows to create markdown-it plugins that read/edit the page data, for example to get the content title and save it.
- Throw an error when two pages have the same url and ouputs to the same file (case insensitive) #170.
- Pretty print the urls of the generated pages on build.
Example:
/about/
instead of/about/index.html
. - Updated dependecies:
std
,esbuild
,deno_graph
,markdown_it
,liquidjs
,parcel_css
andpostcss
. - Prevent the mixture of the content for two pages that outputs to the same file #170.
- Consistency of
page.data.url
after change anypage.dest
value. - Bug detecting static files changes on update.
- Improved the live-reload script for images and stylesheets.
1.5.1 - 2022-02-01
- The
search
helper convertsundefined
andnull
values. Previously, onlytrue
andfalse
values were converted.
- Revert a change in
1.5.0
that makes that some pages doesn't have theurl
value.
1.5.0 - 2022-01-31
- New plugin
esbuild
. - New plugin
parcel_css
. - New notification when an old version of Lume is detected.
- New architecture for the local server, with support for middlewares and events.
- Moved the watcher code to a new class
Watcher
in the core, with support for events. - New command
lume import-map
to create/update import maps files #164.
- Upgrade the minimum Deno version supported to
1.18.1
. - Moved some functions to
core/utils.ts
. - Ignored the files
deno.json
andimport_map.json
by default. - Renamed
Event
interface toSiteEvent
.
- Experimental watcher.
searchByExtension
function incore/utils.ts
because it's not needed anymore.- Argument
--only
forlume init
.
page.document
must returnundefined
if the page is not a HTML page #163.- Updated
liquidjs
,deno_graph
andstd
.
1.4.3 - 2022-01-12
- Updated
liquid
,std
,deno_dom
anddeno_graph
. - Import maps with local files #159, #162.
- Ignored files in experimental watcher.
- Error on rename files.
1.4.2 - 2021-12-31
- Removed unstable Deno API functions on copy files.
- Remove always the date in the filenames of the pages, including pages that contain other date in the front matter.
- Prevent duplicated extensions configuration #157, #158.
1.4.1 - 2021-12-27
- Upgrade errors due unstable features.
1.4.0 - 2021-12-27
This version of Lume has a big internal code refactor but maintaining the public API,
so your sites should work without changes (unless you depend on internal undocumented features).
The only important change is the removal of metrics
feature but probably you are not using it.
- New Components feature.
It allows to create reusable components under the folder
_components
that you can use in your template engines. It's compatible with any engine (nunjucks, js/ts modules, jsx, liquid, pug, etc).- New function
site.loadComponents()
to set up more components loaders. For example:site.loadComponents([".jsx"], moduleLoader, jsxEngine)
.
- New function
- Improved errors logs.
- Options for the
date
plugin to change the helpers' name #150. - The
pug
plugin registers thepug
filter. - Template engine filters (
njk
,pug
,liquid
...) can access to shared data (likesearch
,paginate
etc) - You can add processors and preprocessors to run in all pages with
site.process("*", processFunction)
. - You can use relative paths for
layout
values and when include templates using the template engine syntax (ex:{% include "./template.njk" %}
). - New function
site.includes()
to define different directories for specific extensions. For example:site.includes([".css"], "_styles")
; - The
extensions
option of some plugins allows to define different extensions for different purposes. For example:{ pages: [".tmpl.js"], data: [".js"], components: [".comp.js"]}
. - New search method
search.page()
to return the first page found instead an array with all pages.
- Big internal code refactoring.
- Many core classes have been splitted into different small classes with single responsabilities (SOLID principles).
- In the version
1.x
there are many interface (like:Site
) independent of the implementation (like:LumeSite implements Site
). This was not easy to maintain and it makes hard to explore the Lume code in VSCode because everything is linked to the interfaces instead of the code. So I decided to remove these generic interfaces.
- The dates extracted from the filename (like
2022-12-05_pagename.md
) use UTC timezone for consistency with the dates defined in the front matter.
- The
metrics
feature was removed. It was not very useful and I think maybe it can be implemented in better ways in the future.
- Updated
std
,deno_dom
,deno_graph
,liquid
,pug
,liquid
andpostcss
to the latest version. - Improved extensions detection: In
1.x
you have to load.windi.css
before.css
to prevent conflict. This was fixed in2.x
. - Lot of bugfixes in Windows, specially related with the different path formats.
- Socket error in Safari #155.
- Added a bunch of new tests.
- Changes in the
.git
directory are no longer detected by the watcher.
1.3.1 - 2021-12-07
- The interface of
Renderer
exposes theextraData
property. - The
Engine
interface has a new methodrenderSync
. - Options for the
url
plugin to change the helpers' name #149.
- The option
sourceMap
ofpostcss
plugin accepts the same options aspostcss
library #147. Note: Previously,sourceMap: true
created a.map
file. Now it inlines the source map in the css file (because it's the default behavior ofpostcss
). Set the value tosourceMap: { inline: false }
to keep the old behavior. jsx
elements have thetoString()
function to render to html automatically.- Removed the deprecated
std/hash
dependency and use Web Crypto API.
- Updated
std
,postcss
,postcss-nesting
,deno_dom
anddeno_graph
.
1.3.0 - 2021-11-15
- Initial (experimental) support for on demand server side rendering, used to generate pages dynamically, like Jamstack's DPR. This is compatible with Deno Deploy, but with some limitations due Deno Deploy lack of support for some features (import maps or code generation from strings).
- New plugin
on_demand
to implement page rendering on demand. - New event
beforeRenderOnDemand
. - New option
watcher
to configure the watcher of the live reload (the debounce interval and a list of ignored paths). - Improved default 404 page of the local server.
- Added more mime types to the local server.
- Improved the live reloading of the local server:
- It works with multiple browsers simultaneously.
- It reloads the current page after starting a server, to update with the latest changes.
- It connects faster.
- The command
lume init
has the option--only
to initialize only the config file (lume init --only=config
) or VSCode (lume init --only=vscode
). - Now you can pass arguments to Deno from the Lume cli. For example, to add a custom import_map,
passing arguments after
--
. For example:lume --serve -- --import-map="import_map.json"
. Note: This supersedes flags feature that is no longer available (use env variables for that). - New option
scopedUpdates
to define independent scopes and avoid to rebuild the entire site on update. - New
options
argument toaddEventListener
:once
To remove the listener after the first execution.signal
To provide anAbortSignal
to remove the listener at any time.
- BREAKING: Upgraded the minimum version of Deno supported to
1.16.1
. - BREAKING: Some internal parts have been refactored for more flexibility. This change affects to Lume types in
core.ts
.- New interface
Renderer
to render the site pages. This allows to create your own renderer to replace the default one. - New interface
Emitter
to emit the site pages and static files (save them in _site folder). This allows to create your own emitter to replace the default one.
- New interface
- If a "before" event listener like
beforeBuild
,beforeSave
,beforeUpdate
returnsfalse
the build/update process is stopped.
deno.land/std/io/util.ts
dependency because it's not needed anymore.- BREAKING: Removed
flags
options. Use env variables to pass arbitrary data. For example, usedomain=example.com lume
instead oflume -- example.com
.
- Updated
deno_dom
,cliffy
,deno_graph
,liquid
andsvgo
dependencies. - Catch a possible thrown error that stops the local server.
- Use
any
instead ofunknown
for theHelper
type for more flexibility.
1.2.1 - 2021-10-28
- Upgraded
postcss-nesting
,liquid
,std
,deno_graph
andcliffy
to their latest version. - Default
url
option forpaginate
helper.
1.2.0 - 2021-10-26
- New plugin
liquid
to use the Liquid template engine. - Options to
search
andpaginate
plugins. Now you can configure the helpers names. - New module
lume/plugins.ts
that exports all available plugins.
- Some internal restructuring to improve the code comprehension:
- Moved the template engines inside the plugins that use them.
- Split the
search
plugin topaginate
andsearch
plugins for coherence (both are enabled by default). - Moved the types of the dependencies to their deps/ files.
--quiet
is more quiet onci.ts
#139.
- Updated
postcss
,deno_graph
andstd
. - Ignore the
dest
folder if it's insidesrc
and doesn't start with_
or.
. - Removed unnecesary file system checkings.
- Default 404 page in local server.
1.1.1 - 2021-10-08
- A new experimental watcher (enabled with
lume --serve --experimental
orlume --watch --experimental
).- It use Workers to build the site, in order to refresh the imported modules.
- For now, import maps are not supported yet. See the Deno issue
- Uncoupled
cli/watch.ts
andcli/server.ts
fromSite
. These modules no longer require aSite
instance to work, only the necessary options. - Reduced the debounce timing from 500ms to 100ms #136
- Upgrade
svgo
,std
,cliffy
,postcss
andterser
. - File paths with UTF-8 characters are correctly handled.
- Inserted live-reload script in the default 404 html response.
base_path
plugin may not be executed if thelocation
option is changed later.
1.1.0 - 2021-09-21
- Created a bunch of tests
- New plugin
resolve_urls
that transform links with source files to final urls. For example:/posts/post-1.md -> /post/post-1/
. This allows to write markdown files that are navigable in GitHub. - New plugin
modify_urls
that allows to edit the urls of HTML pages. It's used internally by other plugins likerelative_urls
,base_path
orresolve_urls
. .jsx
pages can export a JSX element as default (previously only a function was accepted).- The lume import map includes
https://deno.land/x/lume/
in addition tolume/
. This allows to use the_config.js
file with or without import maps. - New option
keepDefaultPlugins
topostcss
andmarkdown
. Set totrue
append your plugins instead override the defaults. - Minimal configuration options for
json
andmodule
plugins. lume init
can configure VS Code.- The
server.page404
option works also with pretty urls (ex:/404/
)
- Removed all options of
lume init
and convert it to an interactive command. - The data of different
_data
files and folders in the same directory is now merged. Previously it was overriden, causing inconsistencies. - The local server returns a
301
response for folders without trailing slash. For example:/about-us -> /about-us/
.
- BREAKING: Markdown no longer modify the links automatically.
Use
resolve_links
plugin. - BREAKING: Removed the
entries
argument ofbundler
plugin. (sorry, it was a bad idea)
- Processors take into account the extension of the source file, in addition to the output extension to match with preprocessors behavior.
- Some types like arrays returned by
_data
files no more are converted to plain object. - Some bugs in the
inline
plugin. - Urls starting with
//
are not normalized because they are absolute urls For example://domain.com
- Updated dependencies
std
,deno_dom
. - The property
data
of the pages is now enumerable. This makes pages compatible with some filters of Nunjucks.
1.0.5 - 2021-09-07
- Some bugs in the
bundler
plugin:- The
entries
array items dont't need to start with/
. - Show an error if some entry was not found.
- Wrong content saved when
options.bundler
isundefined
.
- The
1.0.4 - 2021-09-06
- Removed
includes
option forbundler
plugin. They are detected and included automatically now!
1.0.3 - 2021-08-30
- Improved
bundler
plugin with the following additions:- New option
entries
to only emit some files. - New option
includes
to download and include external dependencies. - Support for
Deno.EmitOptions.bundle
to emit a single file with all dependencies.
- New option
- Updated
std
,terser
andsvgo
. - Updated
react
to include typings. - Internal changes to how the processors and preprocessors are handled to ensure that they are executed in the same order they were registered.
- Use Error cause property to chain errors.
1.0.2 - 2021-08-20
- Property
_data
to save arbitrary values in the pages internally. Used by (pre)processors. - Improved docs.
- The minimum Deno version supported to
1.13.1
(from1.12.2
). - Switched to Denoβs native HTTP for the local server and live-reload socket.
This improves the performance
and removes the dependencies
std/http/server
andstd/ws
.
- Fixed some bugs in the
bundler
plugin:- Error processing files while watching due to wrong file extensions.
- The processor now searches and replaces
all
.ts
,.tsx
and.jsx
extensions with.js
. This fixes the import errors.
- Updated
std
,cliffy
anddeno_dom
.
1.0.1 - 2021-08-04
No changes.
1.0.0 - 2021-08-04
- The minimum version of Deno supported is
1.12.2
.
- BREAKING: Removed the import map aliases to
.js
files. Use the.ts
extension to import Lume modules. - BREAKING:
install.js
,ci.js
andcli.js
(with the.js
extension) no longer exists. Use the.ts
extension (install.ts
,ci.ts
andcli.ts
).
- The
--plugins
option oflume init
. - Search pages using values with one character.
For example:
search.pages("url!=/")
. - Custom includes path resolution.
- Export plugins types for Deno doc.
- Updated
std
,cliffy
,postcss
,highlight.js
andmarkdown-it
.
0.25.5 - 2021-07-21
- Installation on Windows. #131.
0.25.4 - 2021-07-21
- Internal: make
Source.getOrCreateDirectory()
a private method. - Ensure that new directories created dynamically during watching
load
_data
files and folders. This opens the door to implement DPR in Lume.
- The
PluginOption
argument typing of thelume()
function. - The
yaml
loader should return an empty object instead ofundefined
on empty files. - Relaxed the return type of helpers.
- Updated
std
andcliffy
.
0.25.3 - 2021-07-12
- Improved the metrics generation. #125.
- Internal code improvements:
- The abstract class
Engine
is converted to a TypeScript interface. - Created interfaces
for
Site
,Page
,Directory
,Source
,Metrics
, etc. - Moved the core files to a
core/
directory. - Renamed
types.ts
tocore.ts
.
- The abstract class
- Updated
highlight.js
andeta
.
0.25.2 - 2021-07-09
- The plugin
date
acceptsnow
as a value to format the current time.
- Moved metrics save/print logic from the CLI to the
Metrics
class, so itβs decoupled from the CLI.
- The filename to save the metrics should be relative to
site.options.cwd
. - Allow to save the metrics files in a subdirectory (and create it if doesnβt exist).
- The
--quiet
mode is now even quieter.
0.25.1 - 2021-07-07
- Detect the
_config.ts
file automatically if_config.js
does not exist. - Allow to set options to markdown-it plugins.
- The
site.includes()
method since itβs not consistent with custom includes.
- The JavaScript deprecation message.
- The
lume init
command provided completions for the plugins enabled by default. - Custom
includes
configuration for plugins is not correctly resolved if theroot
is different toDeno.cwd()
. - The plugin
bundler
on Windows. - The plugin
postcss
with multiple includes.
0.25.0 - 2021-07-04
- Optionally, you can do
import lume from "lume";
in your config file (instead ofimport lume from "lume/mod.ts";
). - The
options
configuration key to theeta
plugin to configure Eta.
- Lume has been ported to TypeScript.
This means that all files have the
.ts
extension. You should edit your config file to import.ts
files instead of.js
. - Renamed plugin
svg
tosvgo
.
- Sync Nunjucks tags doesnβt return safe strings.
- Updated
std
,terser
andmarkdown-it
.
0.24.0 - 2021-06-28
- New
-w
/--watch
option to watch changes without starting a web server. #109. - Made the
_includes
directory configurable: #115.- new
includes
option for site and theeta
,nunjucks
andpug
plugins - new
site.includes()
method, similar tosite.src()
.
- new
options
configuration value to thepug
plugin to set options to thepug
compiler.- Command
lume completions
to generate shell completions for Lume.
- Render pages in parallel, reducing the build time for large sites.
- Added a
--no-check
option tolume upgrade
,install.js
andci.js
to reduce the execution time. - Ported the CLI to TypeScript
and made use of the external library Cliffy for better code structure.
This brings the following changes: #120.
- Removed the duplicated
build
command. Uselume
instead oflume build
. - To see the Lume version, use
lume -V
orlume --version
instead oflume -v
(in lowercase).
- Removed the duplicated
- Replaced the
--verbose
option with--quiet
. - Errors always include the stack. #116, #117.
- Removed the
import_map.json
file because itβs not used. It was kept only for backward compatibility oflume upgrade
from old versions. - Some internal code has been ported to TypeScript:
- the CLI
- the dependency files
- the template engines.
- The
--verbose
option. Use--quiet
for the same behavior as--verbose=1
.
- The async cache for the
inline
plugin. - Some preprocessors were executed several times. #110.
- The
slugify_urls
plugin produced empty path segments (for example,x/@/y
now becomesx/-/y
and notx//y
as before). - JavaScript source maps. #114.
0.23.3 - 2021-06-21
- New metrics feature that allows measuring the performance of large sites:
Use
lume --metrics
to show the metrics in the CLI orlume --metrics=filename.json
to save the data in a file. You can also configure it in the config file. - New
--verbose
option to configure the level of details logged:0
: only important things1
: normal details (the default option)2
: high details (for debugging purposes)
- Allow extensions on Nunjucks. #108.
- Improved the way CLI arguments are applied to the site instance.
- Ensure duplicated pages have an unique
src.path
value. - The
relative_urls
plugin should ignore data URLs. #107.
0.23.2 - 2021-06-19
- Relative URL resolution. #105.
0.23.1 - 2021-06-17
- Error when using
search.pages()
without arguments.
0.23.0 - 2021-06-17
- New
slugify_urls
plugin. - Support for quotes to
page.search()
. This allows to insert spaces in the values. For example:page.search("'tag with spaces' title='Title with spaces'")
.
- BREAKING: The URLs of the pages will no longer be slugified by default.
Use the
slugify_urls
plugin. - The plugin
attributes
is disabled by default.
- The
slugifyUrls
option. Use theslugify_urls
plugin for that. - Support for objects in the
url
variable.
- Replaced the
terser
dependency with a Deno version. - Updated
std
andpostcss
.
0.22.6 - 2021-06-15
- Events
afterRender
andbeforeSave
. - New method
site.addHelper()
to register different types of helpers.
- The class signature of template engines:
replaced the
addFilter()
method with more genericaddHelper()
that allows to register not only filters but also custom tags and other features supported by some engines, like Nunjucks.
- The experimental plugin
image
. Moved to another repository.
- Bug in the function to merge default and user options.
- Ensure the
Page
andDirectory
classes always have thesrc
object. - Updated
postcss
andeta
.
0.22.5 - 2021-06-10
- Argument
limit
tosearch.pages()
.
- Bug on overriding the URL with
--location
.
0.22.4 - 2021-06-09
- Display a warning when installing Lume with an old Deno version.
- Updated
std
. - Updated
postcss
to support Deno 1.11.0.
0.22.3 - 2021-06-07
- Bug in the import map after upgrading to 0.22.2.
0.22.2 - 2021-06-07
deno run <script>
accepts several scripts at the same time.- Display the name of a script executed by
deno run <script>
.
-
The CLI options are applied before
lume()
returns the site instance. This allows to access these options in_config.js
. For example, after runninglume --dev
, you can include conditions in the_config.js
file like this:const site = lume(); if (site.options.dev) { // Development stuff }
Previously, these overrides were applied after
_config.js
exports the site instance.
- Improved the performance of loading page layouts by using the
Source
cache. - Improved error reporting.
search.pages()
with no arguments returns pages with other extensions than.html
.- Clear the cache before building. This allows to run several builds in the same script.
- Updated
nunjucks
(a new fork) andhighlight.js
.
0.22.1 - 2021-06-05
- The file
ci.js
and the commandlume init
on Windows.
0.22.0 - 2021-06-04
- New plugin
base_path
to automatically search and fix all URLs in the HTML by adding the path prefix of thelocation
option. This reduces the need to use theurl
filter everywhere. - The
search.pages()
helper allows multiple values to sort by.
- BREAKING: The
url
variable of the pages must start with/
,./
or../
. - Decoupled the loaders. Now they only need the path argument.
- Preprocessors check the extension of the input and output file. (Previously, only the output extension was used.)
- The
url
filter shouldnβt add the path prefix if itβs already added. search.pages()
must return only HTML pages. (Previously, it also returned assets.)- Windows installation. #98.
0.21.1 - 2021-06-03
- Restored
import_map.json
to not break upgrades from older versions.
0.21.0 - 2021-06-01
- The
postcss
andterser
filters. #97. - The
--plugins
argument tolume init
, so you can load and use plugins. Example:lume init --plugins=postcss,terser,pug
. - The property
document
toPage
that returns the parsed HTML. - New plugin
code_highlight
to automatically highlight all code insidepre code
. Previously, it was part of the Markdown plugin. Now itβs decoupled, so it can be used by any template engine. - The
extensions
andattribute
options to theinline
plugin. - New argument
--dev
(or-d
) forlume upgrade
to upgrade to the latest development version.
- Nunjucks no longer loads
.html
files by default. - The loader argument in
loadPages
andloadAssets
is now optional, and the text loader is used by default. - The loaders and template engines are now fully decoupled.
This allows to use the variable
templateEngine
in a layout. - BREAKING: Removed automatic code highlighting from the Markdown plugin.
Use the new
code_highlight
plugin. - Moved the client code of live reload to a external file
ws.js
. - Live server reloads the entire HTML page after JavaScript changes.
- The
.markdown
extension. Use.md
or configure the Markdown plugin to enable it. - The method
site.engine()
. Use the third argument ofsite.loadPages()
. For example:site.loadPages([".html"], textLoader, nunjucksEngine)
. - The plugin
dom
. Itβs no longer needed because pages can easily return the parsed HTML. For example:site.process([".html"], (page) => modify(page.document))
.
- Updated
std
,postcss
,deno_dom
,date_fns
andhighlight.js
(to11.x
).
0.20.2 - 2021-05-18
- More default character replacements to slugifier.
- Simplified the script runner
by using the
/bin/bash
orPowerShell.exe
executable. This adds support for more features, like pipes, etc.
- Updated
pug
. - Resolve the imported files from template engines, like
nunjucks
, when thesrc
is in a subdirectory.
0.20.1 - 2021-05-15
- File
install.js
for easy installation.
- The command
install
from the CLI.
- The Lume version.
0.20.0 - 2021-05-14
- New properties
pretty
andslugify
for theurl
page variable to override the correspondingprettyUrls
andslugifyUrls
site options in particular pages. #95. import_map.json
to the installation process. This allows to import Lume in the_config.js
file withimport lume from "lume/mod.js";
.- New command
lume install
to install Lume easily using the import map. - New script
ci.js
to execute the CLI in a CI environment (without installing it or defining the import map). - New argument
--import-map
for thelume init
command to enable or disable the import map in the_config.js
file. By default, itβs enabled.
- The minimum Deno version supported to
1.10.0
. - BREAKING:
prettyUrls
to not apply to theurl
page variable if itβs a string. To generate a custom pretty URL: #95.- use an object (e.g.,
{ path: /about-me }
) - add a trailing slash (e.g.,
/about-me/
) - use a full URL (e.g.,
/about-me/index.html
).
- use an object (e.g.,
- BREAKING:
url
values to not assume that the page is HTML. This means the.html
extension wonβt be added by default. #95. lume init
to generate a_config.js
file using the import map. Uselume init --import-map=false
to use the old URLs.
- The property
ext
from theurl
page variable, becausepath
now includes it. #95. - The command
lume update
. Itβs not needed thanks to import maps.
- Updated the
std
dependency.
0.19.0 - 2021-05-10
- The
url
page variable supports an object withpath
andext
properties to fully customize the output filename. #83. - New plugin
relative_urls
to convert all URLs to relative. #85. - Preprocessors (like processors, but are executed before rendering). #91.
- Allowed setting options for the Nunjucks plugin. #90.
- Options to customize the
slugifyUrls
setting: #94.lowercase
: to enable/disable lowercase conversion (true
by default)alphanumeric
: to convert all characters to ASCII (true
by default)separator
: to customize the separator (-
by default)replace
: an object to replace some special characters.
- Option
includes
to customize the path (or paths) used to resolve the@import
ed files in thepostcss
plugin. Useincludes: false
to disable it. autoprefixer
is included by default in thepostcss
plugin.
- The default URL of the
paginate
helper to relative:./page-${page}
. - Improved the slugifier to handle the separator better, for example:
200,000*7
becomes200-000-7
and not2000007
!2 / 3%
becomes2/3
and not-2-/-3-
Who is?.txt
becomeswho-is.txt
and notwho-is-.txt
.
- The deprecated
permalink
variable in pages. Useurl
instead.
- Ignored files on server update werenβt detected properly. #88.
- Throw an error when a proper template engine canβt be found. #87.
- Missing doctype after DOM manipulation.
- The
njk
filter didnβt work with async filters. #93. - Fixed support for subextensions (like
page.html.md
). #83. - Improved the errors of the
inline
plugin. - Made sure that all characters are lowercased when slugifying
(so βββ becomes
no
and notNo
). - Relative URL syntax to require the prefix
./
or../
, so URLs like.foo
,..foo
or.../foo
are interpreted correctly. - Changes in
_data/*/*
files werenβt updated correctly on--serve
. - Updated the
postcss
andpostcss_import
dependencies.
0.18.1 - 2021-04-26
0.18.0 - 2021-04-24
- A second argument for the
lume()
function to configure the default plugins. #45. - Support for more file formats on local server. #67.
- API for the
search
helper: #69.- Replaced the operator
~=
with*=
. - Added the
<
,<=
,>
and>=
operators. - Allowed using the
OR
operator with pipes, liketag1|tag2
ortitle=value1|value2
. - Added support for numeric values.
- Added support for date and datetime values.
- Replaced the operator
- The
date("ATOM")
filter usesZ
instead of+00:00
. #64. - Removed the
hljs
class from the blocks of unhighlighted code. #71. - Datetime values in filenames can omit the seconds,
like in
2021-04-24-18-00_post.md
.
- User options are overridden by default options in the Markdown plugin.
- Changed some filenames to align with the Deno style guide. #73.
- Updated dependencies. #63, #70, #72, #76, #79.
- Improved the CLI help output. #77.
0.17.1 - 2021-04-14
- New option
-o
/--open
to open the browser automatically when runninglume --serve
. #62.
- The extensions
.html.js
and.html.ts
introduced in 0.17.0. They can be confusing because not all templates must generate HTML pages, so.tmpl.js
/.tmpl.ts
are more agnostic and fit all cases.
- Updated the
postcss
version to fix source maps. - Updated the
postcss_import
version to fix the@charset
at-rule.
0.17.0 - 2021-04-11
- The local IP address is shown on
lume --serve
. #55. - Allowed an empty front matter. #54.
- The extensions
.html.js
and.html.ts
are processed as pages (in order to replace to.tmpl.js
and.tmpl.ts
that will be removed in the future). - Added ability to change the sort direction in
search
. #57.
- Deprecated the
permalink
page variable. Useurl
instead. #46. - Removed the
permalink
variable in thepaginate
helper that usessprintf
. Now it accepts only theurl
option that must be a function.
- Improved the slugifier, including a better support for Unicode. #50, #56.
- Update the MIME types used by the server. #51.
- Updated some dependencies. #59.
0.16.6 - 2021-04-04
- New option
slugifyUrls
to disable the slugifier introduced in 0.16.0. #44.
0.16.5 - 2021-03-29
- Undo the change
only rebuild the site if it's needed
due to regression issues.
0.16.4 - 2021-03-28
- Allow to define a function as a
permalink
to generate it dynamically. - The
permalink
value can have a relative path (must start with./
or../
) that will be resolved to the directory name. - The
url
filter allows URLs starting with~
to reference to source files that will be automatically resolved to the final URL.
- When reloading files on
lume --serve
, some ignored files werenβt correctly filtered. - Improved
lume --serve
to only rebuild the site if itβs needed. - Several changes for Windows compatibility.
0.16.3 - 2021-03-21
- The SVG plugin was failed by the SVGO dependency. #43.
0.16.2 - 2021-03-20
- New, experimental plugin
image
to resize images automatically.
- On merge options, arrays were converted to objects.
0.16.1 - 2021-03-14
- The version number.
0.16.0 - 2021-03-14
- New page variable
renderOrder
to control the rendering order of the pages. - New CLI alias
-s
for--serve
.
- Slugify the paths of all generated pages to replace tildes and other conflictive characters and to convert them to lowercase.
- Changed the way to generate multiple pages for more flexibility.
- Ensure autogenerated pages arenβt saved if they donβt change (on
--serve
).
0.15.4 - 2021-03-08
- The
date
plugin accepts strings or integer arguments (they will be converted to aDate
with thenew Date(value)
constructor).
- Updated dependencies.
0.15.3 - 2021-03-06
- Some issues with paths on Windows. #41.
0.15.2 - 2021-02-22
- The version number.
0.15.1 - 2021-02-21
- Added a second argument for the default exported function of
cli.js
to set a site directly.
- Pug templates loaded with
extends
were cached indefinitely. #39. - Allow relative paths in the
--root
CLI argument.
0.15.0 - 2021-02-05
- New advanced search features:
- You can filter by any field at any level, for example
search.pages("header.categories=my-category")
. - You can sort by any field at any level, for example
search.pages("header.categories=my-category", "my.custom.order.field")
. - New method
search.data()
to return the data assigned to any page or directory.
- You can filter by any field at any level, for example
- Restore the ability to return the proper exit code on
lume --run
. - Show more info on error.
- Removed the parameter to ignore tags in
search.tags()
. Replaced with a filter like the one insearch.pages()
.
- The method
search.directory()
to return a directory instance. Usesearch.data()
. - The option
file
to sort the results ofsearch.pages()
. Useurl
instead.
- Cache wasnβt correctly refreshed when using different versions of plugins. #35.
- Updated dependencies.
- Ensure the processors are executed in the same order they where defined.
- The
inline
plugin when the site is located in a subdirectory.
0.14.0 - 2021-02-02
- API for the
Page
class:- Tags are stored as an array in
page.data.tags
(they were previously contained by aSet
inpage.tags
). - Removed the
page.fullData
property.page.data
contains the merged data.
- Tags are stored as an array in
- CLI: #33, #34.
- Switched some options (arguments starting with
--
) to commands:lume --upgrade
tolume upgrade
lume --update
tolume update
lume --init
tolume init
lume --run=<script>
tolume run <script>
.
- Added command-specific help output. For example,
lume run --help
. - Changed the way to specify a different
cwd
: instead oflume path/to/site
, uselume --root=path/to/site
.
- Switched some options (arguments starting with
- Link to the docs in
--help
. #32.
0.13.2 - 2021-01-23
- The incorrect default configuration for YAML plugin.
0.13.1 - 2021-01-23
- PostCSS plugins didnβt process CSS files.
0.13.0 - 2021-01-20
- Normalize options across some plugins.
- The minimum required Deno version to
1.7.0
. - Temporarily,
lume --run
doesnβt return the proper exit code until a bug in Deno is resolved.
0.12.1 - 2021-01-16
- New command
lume --update
to update the Lume version used by any_config.js
file to the same installed globally in CLI.
- The cache in the
search
helper to return the original array instead a clone, so it can be modified outside. - The uncaught exception in the built-in server due to a broken pipe.
0.12.0 - 2021-01-15
- New filter
njk
registered by thenunjucks
plugin. - Moved the
url
filter to a plugin that also creates an additional filterhtmlUrl
to search and fix URLs in HTML code. - New plugin
date
to format date and time values using the library date-fns. - The sorting parameter of
search.pages()
accepts any key (in addition todate
andfile
).
- Moved
attributes
andclassname
to the newattributes
plugin thatβs enabled by default.
- The
url
filter withnull
values. - Improved performance of
search.pages()
by implementing a cache system. - Improved performance of merging data and tags by implementing a cache system.
0.11.0 - 2021-01-12
- Renamed the plugin
css
topostcss
and renamed some of its options:map
tosourceMap
postcssPlugins
toplugins
.
- Some files (like layouts) were loaded multiple times. Implemented a cache system to ensure that every file is read only once.
0.10.8 - 2021-01-03
- Sometimes, the live reload didnβt reload the page, even if the changes were sent to the browser. #20.
0.10.7 - 2021-01-02
- Support for async filters. #22.
- The events
beforeUpdate
andafterUpdate
got a propertyfiles
with the names of all changed files. - Allow configuring the CSS plugin with the following options:
postcssPlugins
: an array of the PostCSS plugins #26.map
: settrue
to generate source maps.
- Ability to dynamically add or remove pages from processors.
- WebSocket sent update messages twice.
- The
paginate
helper didnβt always return the latest page. - Dispatching events that contain scripts
should return
false
if the script fails.
0.10.6 - 2020-12-27
- The multipage generation workflow.
- The random WebSocket errors on reloading changes.
0.10.5 - 2020-12-25
- The
--location
option being unknown.
0.10.4 - 2020-12-24
- Ensure that page tags are always converted to strings.
- The template cache wasnβt always updated.
0.10.3 - 2020-12-21
- The
TypeError
on reloading the server. - Removed extra whitespace when parsing the front matter.
- Improved the Pug plugin.
- The TypeScript errors due to conflicts with Eta. #18.
- Added cache for the compiled templates.
- Improved filters.
- Added hot reloading for modules (
.ts
,.js
) and fixed some issues. - The undocumented
data
filter is disabled by default.
0.10.2 - 2020-12-17
- Donβt add the
.html
extension to files with a subextension. For examplescripts.js.njk
should be saved asscripts.js
instead ofscripts.js.html
. #13. - Refresh the Deno cache with
lume --upgrade
.
0.10.1 - 2020-12-16
- The error on handling
<pre>
elements in Markdown.
0.10.0 - 2020-12-16
- New plugin to use Pug as a template engine. #10.
- New methods
search.previousPage()
andsearch.nextPage()
. - Support for definition lists (
<dl>
) in Markdown. - Improved the default
404
error page. Now it displays a list of files and subdirectories. - New option
templateEngine
to configure the template engine used for every page. #11
- Live reload didnβt always work with HTML.
- HTTP server timeout on missing
/index.html
. - Nunjucks cache didnβt detect the changes to included templates.
- Showing the version on upgrade. #9.
url
filter in Markdown.url
filter to handle hashes and queries (such as#hashid
and?query=value
)
0.9.12 - 2020-12-07
- The
css
plugin uses only thepostcss-import
andpostcss-nesting
plugins because the others fail on Deno.
0.9.11 - 2020-12-06
- The
lume --upgrade
error.
0.9.10 - 2020-12-06
- Updated dependencies.
0.9.9 - 2020-12-01
- Async script runner no longer exits before all promises are resolved. #7.
- Improved the
--upgrade
command.
0.9.8 - 2020-12-01
- Removed a failing dependency.
0.9.7 - 2020-12-01
- Support for executing JavaScript functions with
lume.script()
along with CLI commands. - New CLI arguments
--src
and--dest
to override the corresponding options. - New property
site.flags
that saves all arguments after double dash, like the ones inlume --serve -- flag1 flag2
.
- Fixed multi-command scripts in Linux. #7.
- Replaced
dev.jspm.io
withjspm.dev
for dependencies. - Replaced
denopkg.com
withcdn.jsdelivr.net
for dependencies. #8. - Updated
highlight.js
to10.x
.
0.9.6 - 2020-11-28
- Creating multiple pages with generators.
- Updated dependencies.
- Simplify the code generated by
lume --init
. - Multiple commands joined with
&&
and&
. #7.
0.9.5 - 2020-11-25
- Support for async generators to create pages.
- Predefined values for
attr
filter. - New option
server
to configure the local server, having propertiesport
andpage404
.
- Removed the documentation from the main repository.
- The version number returned by
lume -v
.
0.9.4 - 2020-11-20
- Broken pipe errors on the server.
0.9.3 - 2020-11-13
- The version number returned by
lume -v
.
0.9.2 - 2020-11-13
- CLI command
--upgrade
.
- Renamed the
--version
shortcut-V
to-v
.
- The
denjucks
installation. #6.
0.9.1 - 2020-11-06
@import
CSS of thecss()
plugin, using_includes
as fallback.
0.9.0 - 2020-11-04
- New method
script()
to execute scripts like a task runner. - Allow running scripts in events.
- Autodiscover
404.html
in the built-in server to handle the 404 responses.
- Ignore the
node_modules
directory by default. - Show an error if the
cwd
is not a directory. - Enable the
attr
filter by default.
0.8.1 - 2020-10-28
- New method
ignore()
to ignore files and directories.
- The version number on
lume --version
.
0.8.0 - 2020-10-27
- New method
loadAssets()
to register asset loaders. - New CLI argument to build the site in a different directory
and even to choose a different
_config.js
file.
- Renamed
load()
toloadPages()
and removed theasset
parameter. - Renamed
data()
toloadData()
. - Renamed
helper()
todata()
. - Updating files, when watching, dispatches the events
beforeUpdate
andafterUpdate
(instead ofbeforeBuild
andafterBuild
).
0.7.3 - 2020-10-17
- Removed the version from the
import
URL in the_config.js
file generated with--init
.
- Support special characters in the URL on the local server.
- Rebuild inside a
try
β¦catch
to prevent death on error.
0.7.2 - 2020-10-10
- Updated the version in the CLI.
0.7.1 - 2020-10-10
- Permalinks not respecting the
prettyUrls
option. #1. - Improved the docs about updating the Lume version.
0.7.0 - 2020-10-09
- Events
beforeBuild
andafterBuild
. - Helper
paginate()
. - Method
site.process()
. - Option
prettyUrls
, which istrue
by default.
- The transformers
site.beforeRender()
andsite.afterRender()
. Usesite.process()
instead, which is an equivalent toafterRender
.
- Improved performance by executing some operations in parallel.
- Page duplications.
- The
url
filter with non-string values.
0.6.0 - 2020-09-28
- New parameter for
search.pages()
to sort pages alphabetically. - New argument
--help
and aliases-h
and-V
for CLI. - New plugin
eta
to support theEta
template engine. - New method
helper()
to register global helpers that can be used in templates.
- The parameters
path
andrecursive
insearch.pages()
.
- The
url
filter with relative paths. - PostCSS incompatibility with Deno.
0.5.1 - 2020-09-25
- The
version
variable.
0.5.0 - 2020-09-24
- Ability to generate multiple pages using generators.
- Replaced
pathPrefix
andurl
withlocation
.
url
filter bugs.
0.4.0 - 2020-09-22
- Ability to include the date in the filename.
- New method
search.folder()
. - New option
--dev
to build in development mode.
- Front matter detection.
- Site rebuild after creating or removing directories and files.
- Improved the
url
filter. - Use a content hash to detect real file changes.
- Tags propagation.
- Ensure the
beforeRender
transformers are executed only once.
0.3.1 - 2020-09-19
- Use a temporary fork of Denjucks to avoid loading bugs.
0.3.0 - 2020-09-19
- New plugin
svg
to optimize SVG files. - New plugin
dom
to manipulate HTML using the DOM API. - New filter
classname
to manipulate CSS classes. - New filter
attributes
to manipulate HTML attributes. - First tests.
- Renamed
explorer
tosearch
.
- Refactored source load and reload.
- Explorer returning wrong results.
- Live reload.
0.2.3 - 2020-09-14
- Moved the WebSocket script to
server.js
to avoid reading problems.
0.2.2 - 2020-09-13
- New command
lume --version
.
- CLI installation.
0.2.1 - 2020-09-13
- Execute the module loader from remote (https://deno.land/x/lume).
- Use fixed versions for dependencies.
0.2.0 - 2020-09-13
- New command
lume --init
to create a_config.js
file.
- Merged the
postcss
andstylecow
plugins in the newcss
plugin.
- The JSX engine.
0.1.0 - 2020-09-13
The first version.