Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

doc: add a cli options doc page #5787

Merged
merged 1 commit into from
Mar 21, 2016
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions doc/api/_toc.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
* [C/C++ Addons](addons.html)
* [Child Processes](child_process.html)
* [Cluster](cluster.html)
* [Command Line Options](cli.html)
* [Console](console.html)
* [Crypto](crypto.html)
* [Debugger](debugger.html)
Expand Down
165 changes: 165 additions & 0 deletions doc/api/cli.markdown
Original file line number Diff line number Diff line change
@@ -0,0 +1,165 @@
# Command Line Options

<!--type=misc-->

Node.js comes with a wide variety of CLI options. These options expose built-in
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

CLI options -> command line options perhaps? Are we sure all the users are familiar with the term? Windows users in particular...

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I was hoping that the title would clarify it, but I suppose I can can do this.

debugging, multiple ways to execute scripts, and other helpful runtime options.

To view this documentation as a manual page in your terminal, run `man node`.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Windows users will most likely get a "command not found" if they run man node. We might want to specify that this only works on unixes.



## Synopsis

`node [options] [v8 options] [script.js | -e "script"] [arguments]`

`node debug [script.js | -e "script" | <host>:<port>] …`

`node --v8-options`

Execute without arguments to start the [REPL][].
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This assumes knowledge in operating a terminal which is mostly fine - maybe we can make this more accessible by adding a line saying:

$ node
>

Or something like that - I think it's reasonable to assume there are many windows Node users who are not really used to the command line very much.


_For more info about `node debug`, please see the [debugger][] documentation._


## Options

### `-v`, `--version`

Print node's version.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm wondering if these could use sample invocation results? Might be overkill.

Also, in terms of copy, shouldn't "node" be "NodeJS" as in "Prints the installed version of NodeJS" or something similar?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

¯\_(ツ)_/¯ It's easier to just read/write node everywhere

Edit: also, examples are a bit much imo. People can just run it to see the results. (And if you don't understand some of the later options like the tls cipher, that means you probably shouldn't be using them... :S)



### `-h`, `--help`

Print node command line options.
The output of this option is less detailed than this document.


### `-e`, `--eval "script"`

Evaluate the following argument as JavaScript.


### `-p`, `--print "script"`

Identical to `-e` but prints the result.


### `-c`, `--check`

Syntax check the script without executing.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It might be a good idea to add some invocations to those and explain what "without executing" means and when it might be useful.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"without executing the script"?



### `-i`, `--interactive`

Opens the REPL even if stdin does not appear to be a terminal.


### `-r`, `--require module`

Preload the specified module at startup.

Follows `require()`'s module resolution
rules. `module` may be either a path to a file, or a node module name.


### `--no-deprecation`

Silence deprecation warnings.


### `--trace-deprecation`

Print stack traces for deprecations.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's possible to understand what the flag does from this line - but I think that in the official docs it might be a good idea to give a little detail about it - namely that it prints stack trace for warnings logged to the console (and not the deprecations themselves).

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This isn't currently true yet?



### `--throw-deprecation`

Throw errors for deprecations.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"Tells Node that whenever a deprecated warning is about to be raised (and printed by default), throw an error instead" or something like that perhaps?



### `--trace-sync-io`

Prints a stack trace whenever synchronous I/O is detected after the first turn
of the event loop.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"This is useful for trying to debug performance issues that might stem from using synchronous I/O in Node" maybe? Maybe link to the event loop doc (if that was merged already)?



### `--zero-fill-buffers`

Automatically zero-fills all newly allocated [Buffer][] and [SlowBuffer][]
instances.


### `--track-heap-objects`

Track heap object allocations for heap snapshots.


### `--prof-process`

Process v8 profiler output generated using the v8 option `--prof`.


### `--v8-options`

Print v8 command line options.


### `--tls-cipher-list=list`

Specify an alternative default TLS cipher list. (Requires Node.js to be built
with crypto support. (Default))


### `--enable-fips`

Enable FIPS-compliant crypto at startup. (Requires Node.js to be built with
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It might be worth mentioning that this is not the case in the default binary builds.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Doesn't have (Default) like the above?

`./configure --openssl-fips`)


### `--force-fips`

Force FIPS-compliant crypto on startup. (Cannot be disabled from script code.)
(Same requirements as `--enable-fips`)


### `--icu-data-dir=file`

Specify ICU data load path. (overrides `NODE_ICU_DATA`)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I assume ICU here stands for "International Components for Unicode" but honestly I'm not sure - a lot of our users don't know what ICU means and it might be useful to link to the docs or the site http://userguide.icu-project.org/

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I should probably just say it effects the Intl object like I did below for NODE_ICU_DATA?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, that would help a ton



## Environment Variables

### `NODE_DEBUG=module[,…]`

`','`-separated list of core modules that should print debug information.


### `NODE_PATH=path[:…]`

`':'`-separated list of directories prefixed to the module search path.

_Note: on Windows, this is a `';'`-separated list instead._


### `NODE_DISABLE_COLORS=1`

When set to `1` colors will not be used in the REPL.


### `NODE_ICU_DATA=file`

Data path for ICU (Intl object) data. Will extend linked-in data when compiled
with small-icu support.


### `NODE_REPL_HISTORY=file`

Path to the file used to store the persistent REPL history. The default path is
`~/.node_repl_history`, which is overridden by this variable. Setting the value
to an empty string (`""` or `" "`) disables persistent REPL history.


[Buffer]: buffer.html#buffer_buffer
[debugger]: debugger.html
[REPL]: repl.html
[SlowBuffer]: buffer.html#buffer_class_slowbuffer
3 changes: 2 additions & 1 deletion src/node.cc
Original file line number Diff line number Diff line change
Expand Up @@ -3293,7 +3293,8 @@ static bool ParseDebugOpt(const char* arg) {
}

static void PrintHelp() {
// XXX: If you add an option here, please also add it to /doc/node.1
// XXX: If you add an option here, please also add it to doc/node.1 and
// doc/api/cli.markdown
printf("Usage: node [options] [ -e script | script.js ] [arguments] \n"
" node debug script.js [arguments] \n"
"\n"
Expand Down