Help us understand the problem. What is going on with this article?

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

More than 3 years have passed since last update.

僕の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
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした