Trio v4.0.0: The Commitment Remains The Developer Experience
Trio v4.0.0: Staying True To The Cause.
Back in January, when I released Trio v3.0.0, I made a personal commitment that for the foreseeable future my focus would remain improving the developer experience. Today I am releasing Trio v4.0.0 that continues to deliver on that commitment.
Trio now preserves the relative paths of target child folders when resolving permalinks.
Prior to v4.0.0, the destination paths generated for the children of a permalink's target folder were all flattened, meaning they were all set to what was defined for the permalink's destination path. The result of this behaviour is that all files that match a permalink's target folder (either directly or are child folders of the target folder) all have the same destination path. This behaviour severely limited the usefulness of permalinks and didn't support all the imagined use cases for permalinks.
Beginning with v4.0.0, this behaviour has changed, and now the destination paths generated for children of a permalink's target folder are no longer flattened, and now reflect their relative path to the target folder's path.
As an example of v4's new permalink behavior, imagine that our project's source/fragments folder contains subfolder/alpha.md, subfolder/beta.md, and subfolder/gamma.md and our project's trio.json file contains a permalink defined as "subfolder: /". When Trio generates our project, the root folder will contain public/alpha/index.html, public/beta/index.html, and public/gamma/index.html. Notice how Trio now preserves the subpaths of child folders relative to their target folder defined in the permalink.
Trio now assigns meaningful default values for all the properties in site metadata and trio.manifest.json.
Prior to v4.0.0 both site metadata and trio.manifest.json could be missing properties if they had no values. This is no longer the case and beginning with v4.0.0 Trio now assigns meaningful default values for all the properties in site metadata and trio.manifest.json.
Trio projects now include a source/lib folder.
The "source/lib" folder is now included in every new project that Trio generates. It merely serves as a convenience that provides your projects a recognizable folder for hosting code modules that are required by your project's tag-based callback modules and collection filter modules.
Trio's generated projects now include the empty folders that in previous versions were missing because Git doesn't track empty folders.
This was particular to the scaffold project but Trio v4.0.0 now corrects this and generates the missing folders after it copies the scaffold project to its target folder.
Trio no longer generates spurious warning messages when validating permalinks.
Permalink target folder validation prior to Trio v4.0.0 checks if the permalink target path physically exists in the root/source/fragments folder, which would not be the case if the target path is referencing a fragment that is generated via a collection (fragments generated from collection only exist in memory and are never actually written to the source fragments folder) and results in spurious warning messages.
Trio v4.0.0 eliminates these spurious warning messages by validating permalinks later in its site generation life-cycle and by validating the target folders against Trio's own internal metadata that it accumulates during site generation.
Trio no longer includes the ESLint configuration package @4awpawz/eslint-config-4awpawzconfig in scaffold projects.
Due to frequent security alerts issued by NPM for ESLint-related modules it was decided to remove this package from the scaffold project because of the effort required to remain current with these frequent alerts. You can, however, install this package yourself should you so desire.
Please see the changelog for details.