1. tomoki1207

    No comment

    tomoki1207
Changes in body
Source | HTML | Preview
@@ -1,90 +1,108 @@
僕の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はどこだ!?
+### 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
```
あっ、ふーん。
+
+### npm がつかえる…! (2016/2/22追記)
+
+コメントをいただきまして、npmを下記に修正したところ無事動きました(ように見えます)。
+こう、さっと正解だけ出すスタイルかっこいいです。
+
+```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
+node "%~dp0\..\%ver%\resources\app\apm\node_modules\npm\bin\npm-cli.js" %*
+```
+
+
+
+```bat
+> npm -v
+2.13.3
+```