Skip to content

Commit

Permalink
doc(wiki): Make changes discussed in #2416
Browse files Browse the repository at this point in the history
  • Loading branch information
cclauss authored and rvagg committed Jun 23, 2021
1 parent 7444b47 commit 1dcad87
Showing 1 changed file with 24 additions and 17 deletions.
41 changes: 24 additions & 17 deletions Updating-npm's-bundled-node-gyp.md
@@ -1,46 +1,53 @@
`npm` bundles its own, internal, copy of `node-gyp`. This internal copy is independent of any globally installed copy of node-gyp that you may have installed via `npm install -g node-gyp`.
`npm` bundles its own, internal, copy of `node-gyp`. This internal copy is independent of any globally installed copy of node-gyp that
you may have installed via `npm install -g node-gyp`.

This means that while `node-gyp` doesn't get installed into your `$PATH` by default, npm still keeps its own copy to invoke when you attempt to `npm install` a native addon.
This means that while `node-gyp` doesn't get installed into your `$PATH` by default, npm still keeps its own copy to invoke when you
attempt to `npm install` a native add-on.

Sometimes, you may need to update npm's internal node-gyp to a newer version than what is installed. A simple `npm install -g node-gyp` _won't_ do the trick since npm will still continue to use its internal copy over the global one.
Sometimes, you may need to update npm's internal node-gyp to a newer version than what is installed. A simple `npm install -g node-gyp`
_won't_ do the trick since npm will still continue to use its internal copy over the global one.

So instead:

## Linux, Mac OS X, Solaris, etc.

Unix is easy. Just run the following command. Use `sudo` if necessary.

``` bash
$ [sudo] npm explore npm -g -- npm install node-gyp@latest
```bash
$ [sudo] npm explore npm/node_modules/npm-lifecycle -g -- npm install node-gyp@latest
```

## Windows

Windows is a bit tricker, since `npm` gets installed to the "Program Files" directory, which needs admin privileges in order to modify on current Windows. Therefore, run the following commands __inside a `cmd.exe` started with "Run as Administrator"__:
Windows is a bit trickier, since `npm` might be installed to the "Program Files" directory, which needs admin privileges in order to
modify on current Windows. Therefore, run the following commands __inside a `cmd.exe` started with "Run as Administrator"__:

First we need to find the location of `node`. If you don't already know the location that `node.exe` got installed to, then run:

``` bash
```bash
$ npm install -g which
$ which node
```

As an alternative to the above, those on Windows Server 2003 and later (this includes Windows 7) can run:

``` bash
```bash
$ where node
```

Now `cd` to the directory that `node.exe` is contained in, and with `node_modules\npm` at the end. i.e.:

``` bash
```bash
$ cd "C:\Program Files\nodejs\node_modules\npm"
```

Now you can finally run:
Now you can run:
```bash
$ npm install node-gyp@latest
```

``` bash
$ npm install -g node-gyp@latest
Now `cd` to the `npm-lifecycle` directory:
```bash
$ cd node_modules\npm-lifecycle
```

note: i found that the -g on windows 7 is not correct. It gets installed in C:\Users\<name>\AppData\Roaming\npm\node_modules\gyp which is not the directory where node is installed C:\Program Files (x86)\nodejs\node_modules\npm\node_modules\node-gyp\...
Now you can finally run (again):
```bash
$ npm install node-gyp@latest
```

0 comments on commit 1dcad87

Please sign in to comment.