Releases: red-perfume/red-perfume-task-runner
Releases · red-perfume/red-perfume-task-runner
New Lifecycle Hooks API
Features:
- Replaced the
result
callbacks with a more powerful lifecycle hooks API
Quality:
- Major refactoring around how tasks are processed
- Major refactoring around variable naming to improve codebase
- Many improvements to how error/warning messages are written to include full path to the task index and subTask on markup.
- Refactored and improved some tests
Maintenance:
- All deps already up to date
Special Thanks to:
- @ldiebold for this tweet resulting in the last two releases
Changes:
Multiple psuedo, major cleanup/refactor
Features:
- Handle multiple psuedo classes/elements
- Like
.thing:hover:after {}
- Like
Quality:
- Broke up a lot of really large functions into smaller functions to make the code easier to reason about.
- Moved task processing from the
index.js
to its own file. - Moved some of the improvement's from Gwen's old PR directly into
main
to simplify her branch and get the improvements sooner - Enforced strict JSDocs linting rules.
- Added a sadly needed
max-lines-per-function: 50
linting rule - Refactored some tests
Maintenance:
- Moved manual testing files from ambiguous "test" folder to obvious "manual-test" folder
- Update dependencies/devDependencies
Special Thanks to:
Changes:
Psuedo-classes
Should now support basic CSS with psuedo-classes like :hover
.
.example {
color: #F00;
text-decoration: none;
}
.example:hover {
color: #A00;
text-decoration: underline;
}
becomes
.rp__color__--COLON__--OCTOTHORPF00 {
color: #F00;
}
.rp__text-decoration__--COLONnone {
text-decoration: none;
}
.rp__color__--COLON__--OCTOTHORPA00___-HOVER:hover {
color: #A00;
}
.rp__text-decoration__--COLONunderline___-HOVER:hover {
text-decoration: underline;
}
or
.rp__0 {
color: #F00;
}
.rp__1 {
text-decoration: none;
}
.rp__2:hover {
color: #A00;
}
.rp__3:hover {
text-decoration: underline;
}
and
<div class="example"></div>
becomes
<div class="rp__0 rp__1 rp__2 rp__3"></div>
Changes:
Remove dupe props and handle basic non-classes
Now handles atomizing basic classes, and passing along non-classes like tags, attributes, and IDs.
h1 { color: #F00; }
[data-example] { color: #00F; }
#example { color: #0F0; }
.example { color: #FFF; }
becomes
h1 { color: #F00; }
[data-example] { color: #00F; }
#example { color: #0F0; }
.rp__0 { color: #FFF; }
{
".example": [
".rp__0"
]
}
Also handles removing duplicate identical property/value pairs from the JSON class map where the property and value are identical.
{
".example": [
".rp__display__--COLONnone",
".rp__display__--COLONblock",
".rp__display__--COLONnone"
]
}
becomes
{
".example": [
".rp__display__--COLONblock",
".rp__display__--COLONnone"
]
}
Changes:
Alpha for testing
This is an alpha release for testing/feedback. All known issues are documented on the GitHub Issues page. Report any additional issues you find.
In this initial release:
- Atomizes basic CSS, does not support all valid CSS yet.
- Updates markup to replace existing classes with atomized classes.
- Can process input files or arbitrary strings.
- Can output modified data to files or in callback.
- Basic atomized class name uglification in place.
- Human readable error handling.
Quality:
- Automated unit tests with ~100% coverage.
- Strict linting in place.
- GitHub Actions CI set up to validate code quality and to create coverage badges.
All code changes:
3,561 lines of code + 2,429 (Bootstrap properties) + 5,115 (package-lock.json) = 11,087