1. tomoki1207

    Posted

    tomoki1207
Changes in title
+ATOM付属のnpmを使いたかった
Changes in tags
Changes in body
Source | HTML | Preview
@@ -0,0 +1,90 @@
+僕の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のバージョンを調べます
+
+```bat
+> 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をもとにして完成。
+もしかして僕って天才だったのかな...!
+
+```bat: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" %*
+```
+
+
+```bat
+'node' は、内部コマンドまたは外部コマンド、
+操作可能なプログラムまたはバッチ ファイルとして認識されていません。
+```
+
+ま、まぁ天才だって1度や2度の失敗はね。つきものですよ。
+
+### node はどこだ!?
+先ほど見つけたnpm.cmdの中身を見てみると、node.exeがない場合はnodeコマンドを試しているよう。
+それでさっきのエラーですね。
+原因がわかったので、慣れた手つきでnode.exeを呼ぶcmdを作成します。
+実行ファイルは `{atom.cmdのパス}\..\app-1.5.3\resources\app\apm\bin\node.exe` にありました。
+
+やっぱり天才なのかもしれない...!
+
+```bat: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" %*
+```
+
+
+```bat
+> node -v
+v0.10.40
+```
+ほらね。余裕ですわ。
+
+では、本題の...
+
+```bat
+> 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
+
+```
+
+あっ、ふーん。