インターネット接続できない環境へのnpmパッケージインストール

インターネット接続できない環境を作成し、その環境にnpmパッケージをインストールした手順を備忘録として残しておきます。

インターネット接続できない環境にインストールするもの

インターネット接続できる環境で予め作成、または入手します。

npmパッケージ込みのzipファイル

以下の何れか

  • npmbox-include-v12.18.2.zip
  • npmbox-include-v12.18.2-01-ts.zip
  • npmbox-include-v12.18.2-02-express.zip
  • npmbox-include-v12.18.2-03-newman.zip
  • npmbox-include-v12.18.2-04-swagger.zip
  • npmbox-include-v12.18.2-05-stoplight.zip

※NodeJs、Nodistのインストーラは使用しません。

npmbox化したパッケージ

npmunbox可

問題なくnpmunboxで戻せたパッケージとなります。

  • fp-ts@2.6.7
  • monocle-ts@2.2.0
  • newtype-ts@0.3.4
  • express@4.17.1
  • forever@3.0.0
  • newman@5.1.0
  • swagger@0.7.5
  • swagger-ui@3.28.0
  • swagger-cli@4.0.3
  • swagger-codegen@0.1.1

npmunbox不可(使用しませんが一応)

npmunbox時、エラーとなり戻せませんでしたが、一応リストアップしておきます。

  • newman-reporter-htmlextra@1.17.2
  • @stoplight/prism-cli@3.3.5
  • @stoplight/prism-http@3.3.5

インストール時エラー(使用しませんが一応)

  • npmbox@4.2.1

その他

  • 7-Zip (インストーラー)

インターネット接続できる環境での作業

環境情報

  • Windows 10

nodist のインストール

nodistのページにインストーラーがありますが、今回は使用しません。

Node.js のインストール

バイナリ版のzipを選択します。今回は「node-v12.18.2-win-x64.zip」を使用しました。

ファイルの配置

ダウンロードしたファイルを展開し、任意の場所に配置します。

今回配置した場所

C:\app\nodejs\v12.18.2
環境変数の設定

Path (追加)

C:\app\nodejs\v12.18.2

NODE_PATH

C:\app\nodejs\v12.18.2\node_modules
(参考)までNodist の場合

最初はNodistを使用していましたが、box戻しエラーでハマりましたので使用しないことにしました。参考までにインストール方法を備忘録として残しておきます。

$ nodist add v12.18.2

でインストールが始まります。

nodist -v
0.9.1
nodist add v12.18.2
 12.18.2 [===============] 29126/29126 KiB 100% 0.0s
12.18.2
nodist v12.18.2
v12.18.2
v12.18.2 (global)
node -v
v12.18.2
nodist
  (x64)
  11.13.0
> 12.18.2  (global: v12.18.2)
npmのインストール (Nodist の場合)

インストールしたnodejsに適合したnpmをインストールします。

nodist npm match
npm match

https://codeload.github.com/npm/cli/tar.gz/v6.14.5
[============= ] 4803/5489 KiB 87% 1.5s npm -v 6.14.5

npmbox のインストール & BOX化

オフラインインストールするために使用します。

npm install -g npmbox
npm WARN deprecated jade@0.26.3: Jade has been renamed to pug, please install the latest version of pug instead of jade
npm WARN deprecated mkdirp@0.3.0: Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)
npm WARN deprecated minimatch@0.3.0: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue
npm WARN deprecated mkdirp@0.5.1: Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)
npm WARN deprecated tar.gz@1.0.2: ⚠️  WARNING ⚠️ tar.gz module has been deprecated and your application is vulnerable. Please use tar module instead: https://npmjs.com/tar
[..................] - loadRequestedDeps: WARN deprecated tar.gz@1.0.2: ⚠️  WARNING ⚠️ tar.gz module has been deprecat[..................] - loadRequestedDeps: WARN deprecated tar.gz@1.0.2: ⚠️  WARNING ⚠️ tar.gz module has been deprecat[..................] - loadRequestedDeps: WARN deprecated tar.gz@1.0.2: ⚠️  WARNING ⚠️ tar.gz module has been deprecat[..................] | loadRequestedDeps: WARN deprecated tar.gz@1.0.2: ⚠️  WARNING ⚠️ tar.gz module has been deprecat[..................] | loadRequestedDeps: WARN deprecated tar.gz@1.0.2: ⚠️  WARNING ⚠️ tar.gz module has been deprecatnpm WARN deprecated to-iso-string@0.0.2: to-iso-string has been deprecated, use @segment/to-iso-string instead.
npm WARN deprecated minimatch@3.0.0: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue
C:\app\Nodist\bin\npmbox -> C:\app\Nodist\bin\node_modules\npmbox\bin\npmbox
C:\app\Nodist\bin\npmunbox -> C:\app\Nodist\bin\node_modules\npmbox\bin\npmunbox
+ npmbox@4.2.1
added 340 packages from 807 contributors in 38.962s

※ 警告は出ますが、そのまま進めることにします。以後も同様。

npmbox自体をBOX化(パッケージ化)します。

npmbox npmbox

Boxing npmbox...
  Querying npmbox
  Querying fs-extra@1.0.0
  Querying is@3.1.0
  :
  Downloading xtend@4.0.2
  Packing C:\workdir\npmbox.npmbox...
一旦 zip作成

「C:\app\nodejs\v12.18.2」フォルダを7-Zipで圧縮し、「npmbox-include-v12.18.2.zip」を作成します。

fp-ts のインストール & BOX化

npm install -g fp-ts
+ fp-ts@2.6.7
added 1 package from 1 contributor in 2.026s

fp-tsをBOX化(パッケージ化)します。

npmbox fp-ts

Boxing fp-ts...
  Querying fp-ts
  Downloading fp-ts@2.6.7
  Packing C:\workdir\fp-ts.npmbox...

monocle-ts のインストール & BOX化

npm install -g monocle-ts
npm WARN monocle-ts@2.2.0 requires a peer of fp-ts@^2.0.0 but none is installed. You must install peer dependencies yourself.

+ monocle-ts@2.2.0
added 1 package from 1 contributor in 0.574s

monocle-tsをBOX化(パッケージ化)します。

npmbox monocle-ts

Boxing monocle-ts...
  Querying monocle-ts
  Downloading monocle-ts@2.2.0
  Packing C:\workdir\monocle-ts.npmbox...

newtype-ts のインストール & BOX化

npm install -g newtype-ts
npm WARN newtype-ts@0.3.4 requires a peer of fp-ts@^2.0.0 but none is installed. You must install peer dependencies yourself.
npm WARN newtype-ts@0.3.4 requires a peer of monocle-ts@^2.0.0 but none is installed. You must install peer dependencies yourself.

+ newtype-ts@0.3.4
added 1 package from 1 contributor in 1.558s

newtype-tsをBOX化(パッケージ化)します。

npmbox newtype-ts

Boxing newtype-ts...
  Querying newtype-ts
  Downloading newtype-ts@0.3.4
  Packing C:\workdir\newtype-ts.npmbox...
一旦 zip作成

「C:\app\nodejs\v12.18.2」フォルダを7-Zipで圧縮し、「npmbox-include-v12.18.2-01-ts.zip」を作成します。

express のインストール & BOX化

npm install -g express
+ express@4.17.1
added 50 packages from 37 contributors in 8.377s

expressをBOX化(パッケージ化)します。

npmbox express

Boxing express...
  :
  Packing C:\workdir\express.npmbox...

forever のインストール & BOX化

常に起動しながらさまざまなサービスを提供できるようになります。

npm install -g forever
npm WARN deprecated chokidar@2.1.8: Chokidar 2 will break on node v14+. Upgrade to chokidar 3 with 15x less dependencies.
npm WARN deprecated fsevents@1.2.13: fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.
npm WARN deprecated urix@0.1.0: Please see https://github.com/lydell/urix#deprecated
npm WARN deprecated resolve-url@0.2.1: https://github.com/lydell/resolve-url#deprecated
C:\app\Nodist\bin\forever -> C:\app\Nodist\bin\node_modules\forever\bin\forever
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^1.2.7 (node_modules\forever\node_modules\chokidar\node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.13: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})

+ forever@3.0.0
added 241 packages from 178 contributors in 29.319s

foreverをBOX化(パッケージ化)します。

npmbox forever

Boxing forever...
  Querying forever
  Querying async@^1.5.2
  Querying cliff@^0.1.10
  :
  Downloading yargs@3.32.0
  Packing C:\workdir\forever.npmbox...
一旦 zip作成

「C:\app\nodejs\v12.18.2」フォルダを7-Zipで圧縮し、「npmbox-include-v12.18.2-02-express.zip」を作成します。

newman のインストール & BOX化

Postmanコレクションをコマンドラインから実行できるものです。

npm install -g newman
C:\app\Nodist\bin\newman -> C:\app\Nodist\bin\node_modules\newman\bin\newman.js
+ newman@5.1.0
added 156 packages from 197 contributors in 27.875s

newmanをBOX化(パッケージ化)します。

npmbox newman

Boxing newman...
  :
  Packing C:\workdir\newman.npmbox...

newman-reporter-htmlextra のインストール & BOX化

newmanの実行結果をHTML形式のレポートとして出力するのに必要です。

npm install -g newman-reporter-htmlextra
npm WARN deprecated gulp-header@1.8.12: Removed event-stream from gulp-header
npm WARN deprecated resolve-url@0.2.1: https://github.com/lydell/resolve-url#deprecated
npm WARN deprecated urix@0.1.0: Please see https://github.com/lydell/urix#deprecated
npm WARN newman-reporter-htmlextra@1.17.2 requires a peer of newman@>=4 but none is installed. You must install peer dependencies yourself.

+ newman-reporter-htmlextra@1.17.2
added 753 packages from 782 contributors in 435.019s

newman-reporter-htmlextraをBOX化(パッケージ化)します。

npmbox newman-reporter-htmlextra

Boxing newman-reporter-htmlextra...
  Querying newman-reporter-htmlextra
  :
  Downloading year@0.2.1
  Packing C:\workdir\newman-reporter-htmlextra.npmbox...
一旦 zip作成

「C:\app\nodejs\v12.18.2」フォルダを7-Zipで圧縮し、「npmbox-include-v12.18.2-03-newman.zip」を作成します。

swagger のインストール & BOX化

npm install -g swagger
npm WARN deprecated swagger-editor@2.10.5: No longer maintained, please upgrade to swagger-editor@3.
npm WARN deprecated jade@0.26.3: Jade has been renamed to pug, please install the latest version of pug instead of jade
npm WARN deprecated mkdirp@0.5.1: Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)
npm WARN deprecated to-iso-string@0.0.2: to-iso-string has been deprecated, use @segment/to-iso-string instead.
npm WARN deprecated minimatch@0.3.0: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue
npm WARN deprecated mkdirp@0.3.0: Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)
npm WARN deprecated chokidar@2.1.8: Chokidar 2 will break on node v14+. Upgrade to chokidar 3 with 15x less dependencies.
npm WARN deprecated fsevents@1.2.13: fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.
npm WARN deprecated resolve-url@0.2.1: https://github.com/lydell/resolve-url#deprecated
npm WARN deprecated urix@0.1.0: Please see https://github.com/lydell/urix#deprecated
npm WARN deprecated URIjs@1.16.1: package renamed to "urijs" (lower-case), please update accordingly
npm WARN deprecated core-js@2.6.11: core-js@<3 is no longer maintained and not recommended for usage due to the number of issues. Please, upgrade your dependencies to the actual version of core-js@3.
C:\app\Nodist\bin\swagger-project -> C:\app\Nodist\bin\node_modules\swagger\bin\swagger-project.js
C:\app\Nodist\bin\swagger -> C:\app\Nodist\bin\node_modules\swagger\bin\swagger.js
npm WARN lifecycle The node binary used for scripts is C:\app\Nodist\bin\node.exe but npm is using C:\app\Nodist\v-x64\12.18.2\node.exe itself. Use the `--scripts-prepend-node-path` option to include the path for the node binary npm was executed with.
> core-js@2.6.11 postinstall C:\app\Nodist\bin\node_modules\swagger\node_modules\core-js
> node -e "try{require('./postinstall')}catch(e){}"
Thank you for using core-js ( https://github.com/zloirock/core-js ) for polyfilling JavaScript standard library!
The project needs your help! Please consider supporting of core-js on Open Collective or Patreon:
> https://opencollective.com/core-js
> https://www.patreon.com/zloirock
Also, the author of core-js ( https://github.com/zloirock ) is looking for a good job -)
> nodemon@1.19.4 postinstall C:\app\Nodist\bin\node_modules\swagger\node_modules\nodemon
> node bin/postinstall || exit 0
Love nodemon? You can now support the project via the open collective:
 > https://opencollective.com/nodemon/donate
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^1.2.7 (node_modules\swagger\node_modules\chokidar\node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.13: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})
+ swagger@0.7.5
added 435 packages from 526 contributors in 60.942s

swaggerをBOX化(パッケージ化)します。

npmbox swagger

Boxing newman-reporter-html...
  Querying swagger
  :
  Packing C:\workdir\swagger.npmbox...

swagger-ui のインストール & BOX化

npm install -g swagger-ui
npm WARN deprecated core-js@2.6.11: core-js@<3 is no longer maintained and not recommended for usage due to the number of issues. Please, upgrade your dependencies to the actual version of core-js@3.
npm WARN deprecated core-js@1.2.7: core-js@<3 is no longer maintained and not recommended for usage due to the number of issues. Please, upgrade your dependencies to the actual version of core-js@3.
npm WARN lifecycle The node binary used for scripts is C:\app\Nodist\bin\node.exe but npm is using C:\app\Nodist\v-x64\12.18.2\node.exe itself. Use the `--scripts-prepend-node-path` option to include the path for the node binary npm was executed with.
> core-js@2.6.11 postinstall C:\app\Nodist\bin\node_modules\swagger-ui\node_modules\core-js
> node -e "try{require('./postinstall')}catch(e){}"
Thank you for using core-js ( https://github.com/zloirock/core-js ) for polyfilling JavaScript standard library!
The project needs your help! Please consider supporting of core-js on Open Collective or Patreon:
> https://opencollective.com/core-js
> https://www.patreon.com/zloirock
Also, the author of core-js ( https://github.com/zloirock ) is looking for a good job -)
+ swagger-ui@3.28.0
added 121 packages from 270 contributors in 22.336s

swagger-uiをBOX化(パッケージ化)します。

npmbox swagger-ui

Boxing swagger-ui...
  :
  Querying swagger-client@=3.10.9
  :
  Downloading swagger-client@3.10.9
  Downloading swagger-ui@3.28.0
  :
  Packing C:\workdir\swagger-ui.npmbox...

swagger-cli のインストール & BOX化

npm install -g swagger-cli
C:\app\Nodist\bin\swagger-cli -> C:\app\Nodist\bin\node_modules\swagger-cli\swagger-cli.js
+ swagger-cli@4.0.3
added 48 packages from 29 contributors in 7.693s

swagger-cliをBOX化(パッケージ化)します。

npmbox swagger-cli

Boxing swagger-cli...
  :
  Querying js-yaml@^3.14.0
  :
  Downloading js-yaml@3.14.0
  Downloading swagger-cli@4.0.3
  :
  Packing C:\workdir\swagger-cli.npmbox...

swagger-codegen のインストール & BOX化

npm install -g swagger-codegen
+ swagger-codegen@0.1.1
added 15 packages from 49 contributors in 4.257s

swagger-codegenをBOX化(パッケージ化)します。

npmbox swagger-codegen

Boxing swagger-codegen...
  Querying swagger-codegen
  Querying debug@^2.2.0
  :
  Downloading wordwrap@1.0.0
  Packing C:\workdir\swagger-codegen.npmbox...
一旦 zip作成

「C:\app\nodejs\v12.18.2」フォルダを7-Zipで圧縮し、「npmbox-include-v12.18.2-04-swagger.zip」を作成します。

@stoplight/prism-cli のインストール & BOX化

npm install -g @stoplight/prism-cli
C:\app\Nodist\bin\prism -> C:\app\Nodist\bin\node_modules\@stoplight\prism-cli\dist\index.js
npm WARN lifecycle The node binary used for scripts is C:\app\Nodist\bin\node.exe but npm is using C:\app\Nodist\v-x64\12.18.2\node.exe itself. Use the `--scripts-prepend-node-path` option to include the path for the node binary npm was executed with.

> fast-xml-parser@3.17.4 postinstall C:\app\Nodist\bin\node_modules\@stoplight\prism-cli\node_modules\fast-xml-parser
> node tasks/postinstall.js || exit 0

Love fast-xml-parser? Check https://amitkumargupta.work for more projects and contribution.

npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@~2.1.2 (node_modules\@stoplight\prism-cli\node_modules\chokidar\node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.1.3: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})
npm WARN io-ts-types@0.5.7 requires a peer of monocle-ts@^2.0.0 but none is installed. You must install peer dependencies yourself.
npm WARN io-ts-types@0.5.7 requires a peer of newtype-ts@^0.3.2 but none is installed. You must install peer dependencies yourself.

+ @stoplight/prism-cli@3.3.5
added 295 packages from 305 contributors in 36.207s

@stoplight/prism-cliをBOX化(パッケージ化)します。

npmbox @stoplight/prism-cli

Boxing @stoplight/prism-cli...
  :
  Packing C:\workdir\@stoplight%2fprism-cli.npmbox...

@stoplight/prism-http のインストール & BOX化

npm install -g @stoplight/prism-http
+ @stoplight/prism-http@3.3.5
added 218 packages from 273 contributors in 21.461s

@stoplight/prism-httpをBOX化(パッケージ化)します。

npmbox @stoplight/prism-http

Boxing @stoplight/prism-http...
  :
  Packing C:\workdir\@stoplight%2fprism-http.npmbox...
zip作成

「C:\app\nodejs\v12.18.2」フォルダを7-Zipで圧縮し、「npmbox-include-v12.18.2-05-stoplight.zip」を作成します。

インストール済パッケージ一覧の確認

npm ls -g --depth=0
C:\app\Nodist\bin
+-- @stoplight/prism-cli@3.3.5
+-- @stoplight/prism-http@3.3.5
+-- express@4.17.1
+-- forever@3.0.0
+-- fp-ts@2.6.7
+-- monocle-ts@2.2.0
+-- newman@5.1.0
+-- newman-reporter-htmlextra@1.17.2
+-- newtype-ts@0.3.4
+-- npmbox@4.2.1
+-- swagger@0.7.5
+-- swagger-cli@4.0.3
+-- swagger-codegen@0.1.1
`-- swagger-ui@3.28.0

インターネット接続できない環境での作業

環境情報

  • Windows 10

アプリケーションのインストール

インターネット接続できる環境で入手、作成したものをインストールします。

zipファイルの展開

用途に応じてzipファイルの何れかを展開します。

例として、「npmbox-include-v12.18.2-05-stoplight.zip」を展開することとして、以降の説明を進めます。

環境変数の設定

「システムのプロパティ」「詳細設定タブ」から環境変数に追加します。

以下は「C:\app\nodejs\v12.18.2」に展開した例です。

Path

C:\app\nodejs\v12.18.2

NODE_PATH

C:\app\nodejs\v12.18.2\node_modules

インストール済パッケージの確認

PS C:\app\nodejs\npmbox> npm ls -g --depth=0
C:\app\nodejs\v12.18.2
+-- @stoplight/prism-cli@3.3.5
+-- @stoplight/prism-http@3.3.5
+-- express@4.17.1
+-- forever@3.0.0
+-- fp-ts@2.6.7
+-- monocle-ts@2.2.0
+-- newman@5.1.0
+-- newman-reporter-htmlextra@1.17.2
+-- newtype-ts@0.3.4
+-- npm@6.14.5
+-- npmbox@4.2.1
+-- swagger@0.7.5
+-- swagger-cli@4.0.3
+-- swagger-codegen@0.1.1
`-- swagger-ui@3.28.0

zipを展開し、コマンドパスが通っていれば、確認できます。

作業はこれで終了です。お疲れさまでした。

うまくいかなかった点

インターネットで検索すると、公式ページ同様の手順が説明されている記事が多かったです。

うまくいかなかった点を残しておきます。

npmbox のインストール

npmbox.npmboxを使ってnpmbox自体をインストールします。

tar --no-same-owner --no-same-permissions -xvzf npmbox.npmbox

展開された.npmbox.cacheディレクトリを使用してnpmboxをインストールします。

npm install --global --cache ./.npmbox.cache --optional --cache-min 99999999999 --shrinkwrap false npmbox

エラーが発生した場合はキャッシュクリアを行って、リトライしてみます。

npm cache --force clean
npm WARN using --force I sure hope you know what you are doing.

ダメでした。。。ハマりました。

ローカルインストールしたいのに、ネット接続してしまう。。。

npm install --global --cache ./.npmbox.cache --optional --cache-min 99999999999 --shrinkwrap false npmbox
npm ERR! code ENOTFOUND
npm ERR! errno ENOTFOUND
npm ERR! network request to https://registry.npmjs.org/npmbox failed, reason: getaddrinfo ENOTFOUND registry.npmjs.org
npm ERR! network This is a problem related to network connectivity.
npm ERR! network In most cases you are behind a proxy or have bad network settings.
npm ERR! network
npm ERR! network If you are behind a proxy, please make sure that the
npm ERR! network 'proxy' config is set properly.  See: 'npm help config'

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\workdir\.npmbox.cache\_logs\2020-07-06T22_22_58_493Z-debug.log

ログはこんな感じ↓

7 silly fetchPackageMetaData error for npmbox@latest request to https://registry.npmjs.org/npmbox failed, reason: getaddrinfo ENOTFOUND registry.npmjs.org
8 timing stage:rollbackFailedOptional Completed in 1ms
9 timing stage:runTopLevelLifecycles Completed in 187ms
10 verbose type system
11 verbose stack FetchError: request to https://registry.npmjs.org/npmbox failed, reason: getaddrinfo ENOTFOUND registry.npmjs.org
11 verbose stack     at ClientRequest.<anonymous> (C:\app\nodejs\node_modules\npm\node_modules\node-fetch-npm\src\index.js:68:14)
11 verbose stack     at ClientRequest.emit (events.js:315:20)
11 verbose stack     at TLSSocket.socketErrorListener (_http_client.js:426:9)
11 verbose stack     at TLSSocket.emit (events.js:315:20)
11 verbose stack     at emitErrorNT (internal/streams/destroy.js:92:8)
11 verbose stack     at emitErrorAndCloseNT (internal/streams/destroy.js:60:3)
11 verbose stack     at processTicksAndRejections (internal/process/task_queues.js:84:21)

いろいろ調べていると、.npmrc という設定ファイルがあるとのこと。

場所はこちら↓でした。

C:\Users\[ユーザー名]\.npmrc

.npmrcファイルの内容を確認すると

prefix=C:\app\Nodist\bin

でした。試しに以下に変更しました。

prefix=C:\app\Nodist\bin
registry=http://127.0.0.1

そして、ネット切断状態で再試行するとー

npm install --global --cache ./.npmbox.cache --optional --cache-min 99999999999 --shrinkwrap false npmbox
npm ERR! code E404
npm ERR! 404 Not Found - GET http://127.0.0.1/npmbox
npm ERR! 404
npm ERR! 404  'npmbox@latest' is not in the npm registry.
npm ERR! 404 You should bug the author to publish it (or use the name yourself!)
npm ERR! 404
npm ERR! 404 Note that you can also install from a
npm ERR! 404 tarball, folder, http url, or git url.

はい。もちろんレジストリを作っていないので、404 Not Foundですね。

では、元に戻します。

prefix=C:\app\Nodist\bin

試しに再実行してみるか↓

<pre class="command-line" data-prompt="PS C:\workdir>" data-output="2-16"><code class="language-powershell">npm install --global --cache ./.npmbox.cache --optional --cache-min 99999999999 --shrinkwrap false npmbox
npm WARN registry Using stale data from https://registry.npmjs.org/ because the host is inaccessible -- are you offline?
npm WARN registry Using stale data from https://registry.npmjs.org/ due to a request error during revalidation.
npm WARN deprecated tar.gz@1.0.2: ⚠️  WARNING ⚠️ tar.gz module has been deprecated and your application is vulnerable. Please use tar module instead: https://npmjs.com/tar
[..................] \ fetchMetadata: WARN deprecated tar.gz@1.0.2: ⚠️  WARNING ⚠️ tar.gz module has been deprecated a[..................] \ fetchMetadata: WARN deprecated tar.gz@1.0.2: ⚠️  WARNING ⚠️ tar.gz module has been deprecated a[..................] \ fetchMetadata: WARN deprecated tar.gz@1.0.2: ⚠️  WARNING ⚠️ tar.gz module has been deprecated a[..................] \ fetchMetadata: WARN deprecated tar.gz@1.0.2: ⚠️  WARNING ⚠️ tar.gz module has been deprecat
:
:
:</code></pre>

えっ、えっ。たまたまなのか、ネット接続なしで動作しました。

(その後、再現できませんでした)

npm install --global --cache ./.npmbox.cache --optional --cache-min 99999999999 --shrinkwrap false npmbox
npm WARN registry Using stale data from https://registry.npmjs.org/ because the host is inaccessible -- are you offline?
npm WARN registry Using stale data from https://registry.npmjs.org/ due to a request error during revalidation.
:
C:\app\Nodist\bin\npmbox -> C:\app\Nodist\bin\node_modules\npmbox\bin\npmbox
C:\app\Nodist\bin\npmunbox -> C:\app\Nodist\bin\node_modules\npmbox\bin\npmunbox
+ npmbox@4.2.1
added 334 packages from 813 contributors in 26.34s

インストール済パッケージ一覧の確認を確認してみると

npm ls -g --depth=0
C:\app\Nodist\bin
`-- npmbox@4.2.1

npmbox がインストールされているっぽい。

最新パッケージ化チェックするかは、.npmrcファイルの更新日時を見ている???

わかりませんが、とりあえず、npmbox がインストールできました。

インストール先は .npmrcのプレフィックス設定を変えると変更できるようです。

prefix=C:\app\nodejs\bin
:
C:\app\nodejs\bin\npmunbox -> C:\app\nodejs\bin\node_modules\npmbox\bin\npmunbox
C:\app\nodejs\bin\npmbox -> C:\app\nodejs\bin\node_modules\npmbox\bin\npmbox
+ npmbox@4.2.1
added 334 packages from 813 contributors in 25.806s

各パッケージのインストール

npmboxがインストールされた後は、npmbox(npmunbox)にて各パッケージをインストールします。

npmunbox -g fp-ts.npmbox
npmunbox -g monocle-ts.npmbox
npmunbox -g newtype-ts.npmbox
npmunbox -g express.npmbox
npmunbox -g forever.npmbox
npmunbox -g newman.npmbox
npmunbox -g newman-reporter-htmlextra.npmbox
npmunbox -g swagger.npmbox
npmunbox -g swagger-ui.npmbox
npmunbox -g swagger-cli.npmbox
npmunbox -g swagger-codegen.npmbox
npmunbox -g @stoplight%2fprism-cli.npmbox
npmunbox -g @stoplight%2fprism-http.npmbox

以下のnpmboxはnpmunboxでエラーが発生します。。。

  • newman-reporter-htmlextra
  • @stoplight%2fprism-cli.npmbox
  • @stoplight%2fprism-http.npmbox
npmunbox -g @stoplight%2fprism-cli.npmbox

Unboxing @stoplight%2fprism-cli.npmbox...
  Unpacking @stoplight%2fprism-cli.npmbox...
  Installing @stoplight/prism-cli...
An error occurred while installing @stoplight/prism-cli.
@stoplight/prism-cli was not installed.
  Done.
  Error: getaddrinfo ENOTFOUND registry.npmjs.org
    at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:66:26) {
  errno: 'ENOTFOUND',
  code: 'ENOTFOUND',
  syscall: 'getaddrinfo',
  hostname: 'registry.npmjs.org',
  parent: '@stoplight/http-spec'
}

ということで、npmunboxを使用するのは諦め、zip化しちゃえー

という備忘録でした。

参考記事

npmでのインストールが404エラーになってたが原因はregistryの設定ファイルだった

WidnowsにNode.jsをインストールする方法

タイトルとURLをコピーしました