LoginSignup
13
10

More than 5 years have passed since last update.

ATOM付属のnpmを使いたかった

Last updated at Posted at 2016-02-18

僕のPCにはATOMは入っていますが、nodeは入っていません。
そんな中npmを使いたい場面に遭遇したのですが、インストールするとなると申請があったりして面倒です。

そんなところへ「ATOMには専用のnodeとnpmが入っている」との噂が!
じゃぁそこにパス通せば使えるじゃん、と軽く考えたら失敗したので恥をさらしておこうと思います。

環境

  • OS : Windows8.1 Pro
  • Atom : 1.5.3
  • atom.cmd へのパス : %HOMEPATH%\AppData\Local\atom\bin

apm バージョン確認

まずはapmと噂のnodeのバージョンを調べます

> apm -v
apm  1.6.0
npm  2.13.3
node 0.10.40
python 2.7.10
git 2.6.3.windows.1
visual studio 2013

npm はどこだ!?

atom.cmd の中身は最新バージョンのatom.cmdを呼ぶというシンプルなものですのでこれにならいましょう。
アップデートのたびにメンテとかしたくないですしね。
というわけで、npmの実行ファイルを探します。
適当にあたりをつけながら探したところ↓にありました。
{atom.cmdのパス}\..\app-1.5.3\resources\app\apm\node_modules\npm\bin\npm.cmd

atom.cmdをもとにして完成。
もしかして僕って天才だったのかな...!

npm.cmd
@echo off
for /F "tokens=3 delims=\ usebackq" %%v in (`findstr "app-[0-9]\.[0-9]\.[0-9]" atom.cmd`) do set ver=%%v
"%~dp0\..\%ver%\resources\app\apm\node_modules\npm\bin\npm.cmd" %*

'node' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

ま、まぁ天才だって1度や2度の失敗はね。つきものですよ。

node はどこだ!?

先ほど見つけたnpm.cmdの中身を見てみると、node.exeがない場合はnodeコマンドを試しているよう。
それでさっきのエラーですね。
原因がわかったので、慣れた手つきでnode.exeを呼ぶcmdを作成します。
実行ファイルは {atom.cmdのパス}\..\app-1.5.3\resources\app\apm\bin\node.exe にありました。

やっぱり天才なのかもしれない...!

node.cmd
@echo off
for /F "tokens=3 delims=\ usebackq" %%v in (`findstr "app-[0-9]\.[0-9]\.[0-9]" atom.cmd`) do set ver=%%v
"%~dp0\..\%ver%\resources\app\apm\bin\node.exe" %*

> node -v
v0.10.40

ほらね。余裕ですわ。

では、本題の...

> npm -v

module.js:340
    throw err;
          ^
Error: Cannot find module 'C:\Users\XXXX\AppData\Local\atom\app-1.5.3\resources\app\apm\node_modules\npm
\bin\node_modules\npm\bin\npm-cli.js'
    at Function.Module._resolveFilename (module.js:338:15)
    at Function.Module._load (module.js:280:25)
    at Function.Module.runMain (module.js:497:10)
    at startup (node.js:119:16)
    at node.js:935:3

あっ、ふーん。

npm がつかえる…! (2016/2/22追記)

コメントをいただきまして、npmを下記に修正したところ無事動きました(ように見えます)。
こう、さっと正解だけ出すスタイルかっこいいです。

npm.cmd
@echo off
for /F "tokens=3 delims=\ usebackq" %%v in (`findstr "app-[0-9]\.[0-9]\.[0-9]" atom.cmd`) do set ver=%%v
node "%~dp0\..\%ver%\resources\app\apm\node_modules\npm\bin\npm-cli.js" %*

> npm -v
2.13.3
13
10
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
10