MOERUZE Blog

株式会社モエルゼのブログ

# Windows10にnode-gypをインストールする方法 (2016年9月版)

こんにちは、Moeruze開発者の松本です。
以前Windows10のNode.jsでbcryptをエラーを出さずにインストールする方法の記事を書いた時にnode-gypのインストール方法について触れたのですが、多少無駄があったので、更新されたちゃんとした版を書きます。

Windowsでのnode-gypは準備に手間がかかる割には日本語情報が少ないので、こちらの記事を参考にして導入してみてください。

node-gypとは

まずそもそもnode-gypとは何なのかというと、公式の説明で「Node.js native addon build tool」です。
平たくいうと、C++などのネイティブ言語で書かれたNode.js用のモジュールをビルドするためのツールです。
node-gypはビルドにPythonを使用しているため、先にC++Pythonの開発環境を用意しなければなりません。

Windowsではデフォルトでどちらも準備されていませんので、各種インストールと設定作業が必要になります。
それでは順を追ってセットアップしていきましょう。

全体の流れはこのような感じになります。

  1. Python2.7の導入
  2. VisualStudio2015の導入
  3. npmでwindows-build-toolsをインストール
  4. npm configを設定
  5. npmでnode-gypをインストール

環境

この記事の前提となる筆者の環境です。
32bitのWindowsについては未検証なので気を付けてください。

  • Windows v10.0.10586 64bit
  • Node.js v6.5.0 (nvm)
  • npm v3.10.8

Python2.7の導入

公式サイトからPython2.7のインストールをします。
インストール後はPythonのインストール先を環境変数に登録してください。
コマンドプロンプトからpythonコマンドが使用できるようになればOKです。

VisualStudio2015の導入

WindowsC++の開発環境を導入するために手っ取り早いのがVisualStudio2015をインストールすることです。
スタンドアローンのVisual C++ Build Toolsを導入してもいいのですが、 諸々の設定までしてくれるVisualStudio2015をインストールしましょう。
無料版のCommunityで、インストールの際は全てDefault設定でOKです。

インストールにはそれなりの時間がかかります。
ここで注意点ですが、インストールしただけではまだVisual C++ Build Toolsが使えるようになっていません。
インストールが終わった後、Visual C++ / Windows Template でプロジェクトを新規作成してください。
そうすると、Visual C++ Build Tools諸々のインストール画面が出てきます。
インストール項目には、Visual C++の項目全てを選択してください。
これでVisual C++ Build Toolsが使用できるようになります。

npmでwindows-build-toolsをインストール

npmから、windows-build-toolsをグローバルインストールします。
npmは必ず管理者権限のコマンドプロンプトから実行してください。
インストールコマンドはこちらです

npm install -g --production windows-build-tools

インストールが終了したらコマンドプロンプトを終了します。

npm configを設定

node-gypのために、npmの設定変数を更新します。 現在のnpmの設定変数はこのコマンドで確認できます。

npm config list

それではpythonとmsvs_versionの2つの設定を更新します。
下のコマンドを実行してください。

npm config set python python2.7
npm config set msvs_version 2015

正しく変数が変更されたかはnpm config listで確認してください。

npmでnode-gypをインストール

これでようやく準備が終わりました。
node-gypをインストールしましょう。
下のコマンドを実行します。

npm i -g node-gyp

エラーが出なければOKです。
node-gypコマンドを実行して確認しましょう。

node-gyp

これでnode-gypに悩まなくて済みます。