Node.js プラットフォームでの Web 開発に興味があります。ホスト OS は Windows 7 です。開発環境を設定するには、どのような方法が好ましいでしょうか。ホスト上で直接実行するか、Linux ベースの仮想マシンで実行するか。この 2 つの方法の長所と短所は何ですか。
VM を使用する場合、テキスト エディターと Web ブラウザーを Windows で実行できますか (パフォーマンス上の理由)?
ベストアンサー1
経験から言うと、
リナックス
ドッカー。
編集Docker を使用します。依存関係を組み込み、実行時にプロジェクトをマウントし、特定のバージョンの LTS ノードにのみ固定します。実行できないプロジェクトで新しいパッケージへのアップグレードを余儀なくされて何日も無駄になるよりは、2 GB の Docker イメージを選びます。 - 2018/04/10
しかし、過去 8 年間 Linux ベースの環境で開発し、過去 6 か月間 Windows .NET 環境で Node.js を使用してソフトウェアを開発してきた者として、衝撃的かどうかは別として、ここに私の発見があります...
Windows の問題:
-
Dockerを効果的に活用できない私の知る限り、最新バージョンの Docker ツールキットでこの問題が解決されます。結果は人によって異なります。 - ほとんどのノード モジュールは node_gyp を必要としますが、これは一見問題ないように見えます (gyp はクロス プラットフォーム コンパイラであるため)。ただし、これを Windows で動作させるために必要なことを詳しく調べると、Visual Studio をインストールする以外に何も機能しないことがわかります。これは、いくつかの理由から私にとっては残念です。
- 私は普段 Linux を使用しているので、Visual Studio を使用する必要はありません。
- Windows で何かをコンパイルするには、少なくとも 3 GB の IDE のインストールが必要だというのは、まったくばかげた考えです。ライブラリではなく、決して起動することのない完全にモノリシックな GUI ソフトウェアです。
Debian の Windows 版は
build-essentials
、実際には、特定のインストール シーケンスを必要とする、インターネット上に散らばった GUI のみのインストーラーの、ばらばらで不適切に名前が付けられたコレクションです。これと比較すると、sudo apt-get install build-essentials
時間がかかりすぎ、隠れた落とし穴がいっぱいです。Windows で開発すると、大文字と小文字が混在するパス名の悪い習慣が許されてしまいます。チームが厳格なポリシーを遵守/実施していない限り、これは後で問題を引き起こす危険な道となります。
Windows はパスで 256 文字以上をサポートしていますが、重要なツールは全体的にサポートしていません。ステージ左から rimraf と robocopy が登場します... うーん。
Windows ターミナルはダメです... デフォルトのシェル cmd.exe も同様です...
Powershell の構文は冗長すぎるので、私の好みではありません... Cmder をインストールすると、この問題はいくらか軽減されますが、Cmder が cmd.exe とインターフェイスする唯一の方法は、基本的に、cmd.exe を実行している非表示の Windows ターミナルにキーストロークをコピーすることです。(笑) Cmder は、よりモジュール化されたシェル (zsh、bash など) でより適切に動作します。。アップデート: 私は現在、pshazz と scoop を使って PowerShell を使用していますが、実際に使ってみるととても快適です。シェルとターミナルの状況がさらに改善されたため、Windows 用の Node.js では、環境変数が $UNIX $STYLE ではなく %OF% %THE% %WINDOWS% %VARIETY% であると想定されます。したがって、基本的には bower と npm を主に cmd.exe から使用することになります...さらにうーん。cross-env
司令官とヤルグを組み合わせて導入してからは、この問題は発生しなくなったようです。Windows 用の Python もインストールする必要がありますが、choco が存在し、そこにインストールされているため、問題はありません。アップデート: boxstarter を見てください。レシピを使用して新しいマシンのセットアップを自動化するのに役立ちます (または、実際に ansible または salt を使用することもできます)。
経験豊富な Python、Ruby 開発者は、古いプロジェクトでは、再度アクセスする必要がある場合に備えてエンジンのバージョンをサイロ化する必要があることを教えてくれます (新しいバージョンにアップグレードすることは、ほとんどの場合、適切でも実用的でもないため、ラビット ホールと呼ばれます)。そのため、rvm や virtualenv のようなものが必要になります...
nvm (Unix システム、Linux、MacOSX でのみ動作します) は、bash スクリプトのコレクションであるため、Zgen および
Tarrasch/zsh-autoenv
プラグインとともに ZSH をシェルとして使用することをお勧めします。- nodeenv は、おそらく、virtualenv と統合する Python プログラムです。これを好む人もいます。私は問題ありませんが、私たちのチームでは nvm を使用しています。
-
ただし、「理由」により、nvm-windows を使用する方がよいでしょう。それをやめて、nodist
Windows で使用してください... はるかに良い選択です。nodist が設計上これを処理するので、何らかの autoenv について心配する必要はありません。
Windows へのインストール:
- chocolatey をインストールする
-
choco install cmder nodejs python2
choco install python2
- をインストールし
http://scoop.sh
、それを使用して pshazz をインストールします。 - 手動でグローバルにインストールされたノードのすべてのバージョンを削除します。
-
nvm-windowsをインストールするnodistをインストールします。 -
CPU サイクルを大切にする場合は、Visual Studio 2012 Express をインストールしてから起動しないでください。Microsoft が build-essentials と同等のものをリリースしているため、これはやり過ぎかもしれません。 - Windows 7/10 64ビット SDK をインストールする
Linux 上の問題:
要約: 以下の理由以外にも、nvm を使用してください。
-
グローバル npm node_modules パスをユーザー所有のディレクトリに設定する必要があります (私は を使い始めましたnvm を使用する場合は問題ありません。~/.local/share/npm
)。嬉しいことに、これは nodejs の Windows インストールで正しく実行されたことがわかりました (おそらく意図的ではありません)。 -
Ubuntu にはすでに というバイナリがあるためnvm を使用する場合も問題はありません。node
、#!/usr/bin/env node
デフォルトでは nodejs は実行されません。幸い、Debian システムにはenv
バイナリが出力するものを制御するための優れた管理ツールがあります:update-alternatives
。ここでシンボリックリンクを使用するようにという提案は無視してください。これは後で微妙な形で問題を引き起こすだけです。
Linuxへのインストール:
$ sudo apt-get install git-core git-flow build-essentials python-dev python- pip
$ curl https://raw.githubusercontent.com/creationix/nvm/v0.20.0/install.sh | bash
$ npm config set prefix ~/.local/share/npm
$ nvm install stable
$ nvm alias default stable
参照:
- https://groups.google.com/forum/?fromgroups#!msg/msysgit/9YIR6jlNB0Q/zHhPN3tejFkJ
- https://github.com/creationix/nvm
-
http://bliker.github.io/cmder/ -
https://github.com/coreybutler/nvm-windows - https://github.com/Tarrasch/zsh-autoenv
- https://github.com/lukesampson/pshazz
- http://scoop.sh
- https://github.com/marcelklehr/nodist