You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/learn/cross-runtime-support.md
+49-27Lines changed: 49 additions & 27 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,48 +2,65 @@
2
2
3
3
> `fuckingnode compat [item]`
4
4
5
-
!!! note "What we mean by _Cross-runtime_"
6
-
While we always use the term "cross-runtime", we also include _cross-platform_ (Golang and Rust) support inside of that term.
7
-
8
-
While FuckingNode can be a very powerful automation tool if properly used, in the end it's just an executable that _automates_ tasks; it doesn't do much on its own. Thus, **features that aren't supported by a runtime itself, won't work with us**. (Adding "polyfills" or "glue fixes" is not discarded as an idea, but not planned short-term anyway).
9
-
10
-
You can run `compat` anytime from the CLI to see a table showing what works and what doesn't. **NodeJS is the only environment with 100% platform support.** As of version 4.0.0, that table looks like this:
'Yes', 'No', 'Partial' indicate the obvious. '(Agnostic)' indicates that the
34
+
feature runs anywhere (it won't check if you're on a supported runtime or depend
35
+
on any runtime-specific feature).
36
+
37
+
---
23
38
24
39
Reasons for not supporting a feature are the following.
25
40
26
41
## Partial Deno, Bun, Cargo & Go support for cleanup
27
42
28
-
In all these runtimes, the kind of cleanup commands we'd use (`prune`, `dedupe`...) aren't available, so the _cleanup itself_ isn't available.
43
+
In all these runtimes, the kind of cleanup commands we'd use (`prune`,
44
+
`dedupe`...) aren't available, so the _cleanup itself_ isn't available.
29
45
30
-
`clean` will still work with them, as linting, prettification, or updates do work.
46
+
`clean` will still work with them, as linting, prettification, or updates do
47
+
work.
31
48
32
49
## No Deno support for hard cleanup
33
50
34
-
FuckingNode itself is written in Deno, thus we're disallowed by the runtime from cleaning its cache. While a "gluefix" exists, it doesn't work most of the time.
51
+
FuckingNode itself is written in Deno, thus we're disallowed by the runtime from
52
+
cleaning its cache. While a "gluefix" exists, it doesn't work most of the time.
35
53
36
54
## No Golang support for release
37
55
38
-
We might add it in the future, for now it's not supported because it're harder to implement (as more steps are required).
39
-
40
-
## Partial Cargo & Go support for commit
41
-
42
-
`commitCmd` is not supported by these platforms. This is because Cargo and Go don't have "JS-like `run`" tasks.
56
+
We might add it in the future, for now it's not supported because it're harder
57
+
to implement (as more steps are required).
43
58
44
59
## Partial Go support for stats
45
60
46
-
Golang _do_ support it but doesn't support the Recommended Community Standards part. `go.mod` doesn't have any field that can be compared to anything. No module name, no author, no license, etc...
61
+
Golang _does_ support it but doesn't support the Recommended Community Standards
62
+
part. `go.mod` doesn't have any field that can be compared to anything. No
63
+
module name, no author, no license, etc...
47
64
48
65
## No Cargo & Go support for migrate
49
66
@@ -52,3 +69,8 @@ There's a single package manager for these platforms, `migrate` is useless.
52
69
## No audit support for Deno, Cargo, or Go
53
70
54
71
Neither Deno, nor Golang, nor Cargo, offer an `audit` command.
72
+
73
+
## Partial terminate support for JS runtimes
74
+
75
+
Some steps like PATH removal or deeper uninstall (specifically for Node) are yet
Copy file name to clipboardExpand all lines: docs/learn/errors.md
+13-13Lines changed: 13 additions & 13 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -70,9 +70,15 @@ Usually happens with kickstart. You provided a path that is _not_ empty, but _ha
70
70
71
71
Errors related to configuration.
72
72
73
+
### Invalid favorite IDE
74
+
75
+
`Cfg__User__FavIDE`
76
+
77
+
If you manually set your favorite IDE to an invalid value this error happens.
78
+
73
79
### Invalid CmdKey
74
80
75
-
`Cfg__InvalidCmdK`
81
+
`Cfg__FknYaml__InvalidCmdK`
76
82
77
83
[Cmds](../manual/fknode-yaml.md#cmdsets) require to start with a key character, either `~`, `$`, `=`, or `<`. If the first character of a Cmd is not any of those, this error throws.
78
84
@@ -140,6 +146,12 @@ Differentiating between npm, pnpm, Yarn, Bun, Deno, Rust, or Go projects, or no
140
146
141
147
_The name's a bit of a joke, but_ this error happens when the same project has two or more lockfiles. Lockfiles are our main tool to determine the "state" (env) of your project; your project is not Schrödinger's cat and shouldn't be in several states at the same time.
142
148
149
+
### Env not found
150
+
151
+
`Env__NotFound`
152
+
153
+
If a project from your list isn't found (in the sense of the filepath not being found), this error may happen.
154
+
143
155
## Task [Task]
144
156
145
157
All errors in this category are `Task__[TASK TYPE]`, which can be `Release`, `Commit`, `Launch`, `Update`, `Lint`, `Pretty`, or `Build`. Any unexpected error when running any of these tasks for any project will trigger a Task category error.
@@ -179,20 +191,8 @@ More casual way to call a "NotImplemented" error. If we're lazy to finish a feat
179
191
180
192
Errors that depend on something external.
181
193
182
-
### Publish
183
-
184
-
`External__Publish`
185
-
186
-
When doing a release, if your package manager's publish command fails, this error code appears.
187
-
188
194
### Setting / Favorite IDE
189
195
190
196
`External__Setting__FavIde`
191
197
192
198
If you changed your favorite IDE to something unsupported, then got us to attempt to launch it, this happens. You cannot directly set this setting to something invalid, you'd have to manually edit the config file - making this an "external" error.
193
-
194
-
### Project / Not found
195
-
196
-
`External__Proj__NotFound`
197
-
198
-
If a project from your list isn't found (in the sense of the filepath not being found), this error happens. You cannot add a project that doesn't exist unless modifying the config file; or adding one that does exist, then moving the directory - making this an "external" error too.
Copy file name to clipboardExpand all lines: docs/manual/index.md
+44-31Lines changed: 44 additions & 31 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -5,41 +5,54 @@ description: "A complete guide for your complete dev-life-quality improver."
5
5
6
6
# FuckingNode user manual
7
7
8
-
Everything, from the basic to the complex, is documented here step by step.
8
+
Everything, from the basic to the complex, is documented here step by step.**Use the sidebar to navigate everything page by page and learn everything in detail.**
9
9
10
-
## Outline
10
+
You can also just keep reading this page for a TL;DR.
11
11
12
-
These are links to individual pages. For the full manual, click the first one, then keep reading. For a faster, one page guide to quickly get started, [skip here](#tldr-for-getting-started-as-soon-as-possible).
ARM (`aarch64-linux`) support is available, but NOT tested!
37
36
38
-
Install it for your platform following [the instructions here](./install.md) (just like any professional tool, installation is as easy as running one CLI command).
Add your projects to FuckingNode's project list. This is done manually with the `fuckingnode add <path>` (or `fkadd <path>`) command. `<path>` can be any file path, or `.` to use the CWD.
55
+
Add your projects to FuckingNode's project list. This is done manually with the `fuckingnode add <path>` (or `fkadd <path>`) command. `<path>` can be any file path, or empty to use the CWD.
It's recommended that from now on you run `fkadd .` immediately after running `npm init` (or `pnpm init` or whatever) each time you create a project.
55
68
56
-
### Step 2
69
+
### Step 2: Start using it
57
70
58
71
A basic cleanup is invoked by running this command, with no arguments.
59
72
@@ -78,7 +91,7 @@ fuckingnode clean ../project1
78
91
fuckingnode clean my-framework
79
92
```
80
93
81
-
### Step 3
94
+
### Step 3: Use it better
82
95
83
96
For increased intensity, use this.
84
97
@@ -90,7 +103,7 @@ When cleaning like this, global caches from all your installed package managers
90
103
91
104
If you only wish to clear global caches without waiting for individual cleanup of all of your projects, use `fuckingnode clean hard-only`, or a shortcut (`fuckingnode global-clean` or `fuckingnode hard-clean`).
92
105
93
-
### Step 4
106
+
### Step 4: Use it even better
94
107
95
108
For the best experience, you can pass flags to the clean command for using additional features. Detailed explanations are available at the [usage manual](../manual/usage.md), but basically:
96
109
@@ -102,7 +115,7 @@ For the best experience, you can pass flags to the clean command for using addit
102
115
103
116
Each flag can be invoked with its 1st letter for faster typing (`-l` = `--lint`, `-p` = `--pretty`...).
104
117
105
-
As outlined [before](#step-2) cleaning is global. When running with `--lint` all your projects will be automatically linted (unless overridden via an [`fknode.yaml` file](fknode-yaml.md)), greatly increasing your productivity.
118
+
As outlined [before](#step-2-start-using-it) cleaning is global. When running with `--lint` all your projects will be automatically linted (unless overridden via an [`fknode.yaml` file](fknode-yaml.md)), greatly increasing your productivity.
106
119
107
120
Behavior itself can also be overridden via an `fknode.yaml` file, in case you'd like to use a different linter than ESLint, or a different prettifier than Prettier.
108
121
@@ -113,7 +126,7 @@ Note `--destroy` and `--commit` _are_ affected by the global cleaning rule, howe
113
126
114
127
---
115
128
116
-
That's the basic manual. For further learning about `fknode.yaml` or advanced features, [refer to the desired manual section](#outline).
129
+
And that's the basic manual. For further learning about `fknode.yaml` or advanced features, keep navigating the documentation. You've got it all in the sidebar.
0 commit comments