All notable changes will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Added an install script for Microsoft Windows.
- Added the option to flush config files, so the user can save up space.
- Now all commands show their output synchronously, giving the feel of a faster CLI.
- Now
settings schedule
is hidden behind the--experimental-schedule
flag, as it doesn't work properly.Deno.cron
(method used to schedule tasks) itself is currently considered unstable, FYI. - Now in some places instead of an "Unknown command" error, the help menu is shown so you can see what commands are valid.
- Fixed
clean hard
not working withnpm
, as cache required a--force
arg. - Fixed
clean hard
wasting resources by recursively running global commands (like cache cleaning). - Fixed
clean hard
trying to use, for example,yarn clean
with users that don't haveyarn
installed. - Fixed the CLI writing unneeded logs from
npm
/pnpm
/yarn
to the.log
file. - Fixed the app crashing (unhandled error) upon joining two untraceable paths.
- Fixed the app crashing (unhandled error) upon calling
manager list
and having untraceable paths saved. - Fixed
clean
writing twice to thestdout
what cleanup commands would do. - Fixed many potential unhandled errors at many places.
- Fixed the base directory for app config being recursively created on each run.
- Fixed the app fetching config paths many times. This should slightly improve performance (as it reduces path-checking operations).
- Added
settings schedule <hour> <day>
to schedule F*ckingNode, so your projects are automatically cleaned.
- Fixed an issue with path joining that made the app unusable (as it couldn't access config files).
- Fixed
manager add
not detecting workspaces when an object instead of an array is used. - Fixed
manager add
not correctly resolving relative paths, such as../../my-project
.
- Added support for monorepos / Node workspaces. When adding a project, now F*ckingNode will look through the
package.json
. Ifworkspaces
are found, it will prompt to add them as separate projects so they get their own cleanup as well. - Added cleaning levels, adding a new
hard
level and replacing the--maxim
flag. Nowclean
takes a level, eitherclean normal
,clean hard
, orclean maxim
(if no level, "normal" will be used as default).normal
will do the easy: recursively run cleaning commands.hard
will do what default used to do (clean + dedupe) + it will also clean cache.maxim
will do what maxim does: forcedly removenode_modules/
for everyone.
- Added
list --ignored
flag to only list ignored projects.
- Rename some paths used to store program info.
- Now flag commands like --help or --version are now case unsensitive and all support single dash calls (-help) and 1st letter calls (-h, -v).
- Now
migrate
will install with the new manager before removing the old lockfile. As far as I know some managers can understand other managers' lockfile format, so this will make stuff less likely to fail.
- Remove the
--full
arg fromstats
. Now the project itself is always counted.
- Fixed
stats
adding it's self size twice, incorrectly increasing the MB size. - Fixed paths being always joined as
some/location
, now Deno'sjoin
function is used to avoid issues. - Fixed
manager cleanup
not detecting some projects (an error with duplicate handling). - "Fixed" handling projects with more than one lockfile. For now it'll just skip them to avoid messing up versions. Future versions might add a better handler.
- Added
migrate
moves a project from one package to another. - Added
manager revive
allows to stop ignoring a project (opposite ofmanager ignore
)
- Decided to hide
stats
behind--experimental-stats
due to instability. - Updated help menu.
- Now
--self
can be used anywhere you need to pass a path.- Also, now
normalize
fromnode:path
is used to avoid issues.
- Also, now
- Now
stats
(--experimental-stats
) will recursively get the size of DIRs withinnode_modules/
for more accuracy. - Now
stats
(--experimental-stats
) rounds numbers correctly.
stats
(--experimental-stats
):- While recursive fetching improved accuracy, it still provides sizes lower than the real one (like hundreds of MBs lower).
- It takes a lot of CPU.
- It does throw an error for many files stating that they "cannot be accessed".
- Added
manager cleanup
checks the list of projects and validates them. If some project cannot be cleaned, it will prompt you to remove it. - Added
--self
flag tomanager
commands, so you can use the CWD instead of manually typing a path.
- Now
manager add
validates if you want to add paths that are valid but don't make sense (they don't havepackage.json
ornode_modules
).
- Fixed an error where the app would throw an error when the user checked for updates too much (AKA reached GitHub's API rate limit).
- Fixed an error where non-existent paths would break
stats
. - Fixed
manager add
adding a path even if it doesn't exist. - Fixed an issue where if the
node_modules
DIR wasn't present but the user chose to add the project anyway, it got added twice. - Fixed an issue where removing a duplicate project would remove it entirely, instead of keeping one entry.
- Note: it was fixed by making it remove only once, so if you have the same entry four times and remove it, you will still have 3 duplicates.
- Added
self-update
so the user can manually check for updates every time he wants to.
- Now
manager add
checks if the path exists before adding it.
- Fixed
manager
being broken by a human mistake on previous updates (sorry, mb) and it didn't recognize one word commands likelist
. It has been fixed. - Fixed
clean
crashing if one of your project's path didn't exist. Now it will log an error and skip it without interrupting the cleanup. - When auto-checking for updates, the program would consider there are updates if your version number is greater than the one from GitHub - it's unlikely that the end user ever saw this, but it's now fixed.
- Added
stats
command. Shows stats, AKA how much storage your projects are taking up. By default only counts the size ofnode_modules/
, but you can pass the--full
flag to it so it also includes your code. - Added
manager ignore
command. Creates a.fknodeignore
file at the root of the project, so F*ckingNode simply ignores it whenever a cleanup is made.
- Replaced the actual f-word with an asterisk-included version (f*cking) app-wide. Also made an effort to rename variables and all that kind of stuff.
I don't want to get banned. - Now "unknown errors" when pruning a project actually show the command's
stderr
.
- Fixed
manager
sometimes not properly handle wrong arguments. Now it should do.
- Added
--maxim
flag to theclean
command. It will take cleaning to the max (AKA removingnode_modules/
entirely). - Added additional commands to the cleaner, like
dedupe
, for more in-depth cleaning. - Added the capability to the CLI of checking for updates by itself. Does it only once every 7 days to save up on the user's resources.
- Changed some logs to include emojis.
- Fixed an unhandled error where if you just run
fuckingnode
with no args, you got a TypeError instead of "Unknown command...". - Now the path you provide for add / remove gets a bit of purification (removing trailing spaces & trailing
/
) to avoid issues.
- Added
--version
flag to the main command. - Added
--verbose
flag to theclean
command. Some logs are now hidden behind this flag. - Added
--help
flag to show basic help about the program.
- Fixed the app losing data from one version to another (now it uses
APPDATA/FuckingNode/*
instead ofAPPDATA/FuckingNode-VERSION/*
to store data). - Fixed some arguments being case-sensitive.
Everything, I guess. It's the first release lol.