web-dev-qa-db-ja.com

Node.js開発、WindowsまたはLinux?

Node.jsプラットフォームでのWeb開発に興味があります。私のホストOSはWindows 7です。開発環境をセットアップするのに望ましい方法は何でしょうか。ホストで直接実行するか、Linuxベースの仮想マシンで実行しますか?これら2つの方法の長所と短所は何ですか?

VMを使用する場合、WindowsでテキストエディターとWebブラウザーを実行できますか(パフォーマンス上の理由から)。

35

設定ファイルを使用するだけのシステムがあり、パスの違い("c:\blarg" vs "~user/blarg")そして、ボーナスとして、デバッグ環境と実稼働環境の違いを制御できます。

Node.jsはクロスプラットフォームなので、開発者はあらゆる種類のコンピューターで作業しているため、まったく問題はありません。

これは、ファイルストレージプロジェクトで使用する構成ファイルの例です。

/**
 * All of these are mandatory except for log_level (which defaults to "info", 1) 
 * and log_echo_to_console (which defaults to false)
 */
exports.config = {
    log_level: 0,
    log_file: "/path/to/send.log",
    request_log_file: "/path/to/send_requests.log",
    log_echo_to_console: true,
    port_number: 8088,
    no_notification_emails: true,
    image_url_base: "http://s3.amazonaws.com/",      // MAKE SURE THIS ENDS IN "/"
    tmp_file_folder:"/tmp/",
    s3_info: {
        key: 'xxxxxx',
        secret: 'yyyyy',
        file_bucket: 'sendtransfer/',
    },
    backend_info: {
        db_info: {
            server: "localhost",
            user: "db_user",
            password: "secret",
            database: "SendRemote",
            pooled_connections: 125,
            idle_timeout_millis: 30000
        },
        memcache_info: {
            Host: "127.0.0.1",
            port: "31111",
            pooled_connections: 200,
            timeout: 20000
        }
    },

    debug_server: true
};

Windowsマシンの場合、パスを変更するだけです。大丈夫だよー!

次に、コードで次のように入力します。

var local = require('local.config.js');
fs.writeFile(local.config.log_file);
// etc

多文化主義を受け入れる!!!

21
MarcWan

ええ、経験から Linux Docker。

editDockerを使用します。依存関係をベイク処理し、実行時にプロジェクトをマウントし、LTSノードの特定のバージョンのみに固定します。実行不可能なプロジェクトで2GBのdockerイメージを使用して、新しいパッケージへのアップグレードを余儀なくされた日をもたらしました。 -2018/04/10

しかし、Linuxベースの環境での開発に8年を費やし、Windowsドットネット環境でnodejsを使用したソフトウェアの開発に6か月を費やした人から、衝撃やその他の私の発見があります...

Windowsの問題:

  • dockerを効果的に利用できない dockerツールキットの最新バージョンは、私が知る限りこれを解決します。 ymmv。
  • ほとんどのノードモジュールはnode_gypを必要としますが、これは表面上は問題ないようです(gypはクロスプラットフォームコンパイラであると想定されているため)。 。これにはいくつかの理由があります。
  • 私は通常Linuxを使用しているため、Visual Studioを使用する必要はありません。
  • Windows上で何かをコンパイルするには、少なくとも3GBのIDEのインストールが必要であるというのはまったくばかげた考えです。libではなく、私がこれまでに起動することのない完全にモノリシックなGUIソフトウェアです。
  • debians build-essentialsに相当するウィンドウは、実際には、特定のインストールシーケンスを必要とする、インターネット上に散らばるGUIのみのインストーラーという、ばらばらに広がる悪名高いコレクションです。これは、Sudo apt-get install build-essentialsと比較して非常に時間がかかり、隠れた落とし穴がたくさんあります。

  • windowsで開発すると、大文字と小文字が混在するパス名の悪い習慣が可能になりますが、チームが従う/強制する厳格なポリシーを持たない限り、これは後の問題への滑りやすい傾斜になります。

  • windowsはパスで256文字以上をサポートしていますが、重要なツールはサポートしていません。左のステージに入ります:リムラフとロボコピー...うーん。

  • windowsターミナルは吸い込みます...デフォルトのシェルも同様です:cmd.exe ... Powershellは構文が非常に冗長であり、私の好みではありません... (笑)。 Cmderは、よりモジュール化されたシェル(zsh、bashなど)で非常によく機能します。update:pshazzとscoopでpowershellを使用するようになりました。

  • シェルとターミナルの状況をさらに改善しても、windowsのnodejsは、環境変数が%OF%%THE%%WINDOWS%%VARIETY%...であると想定しますが、$ UNIX $ STYLEではありません。したがって、基本的にはcmd.exeからbowerとnpmを使用することになります。 cross-envと司令官またはyargsの組み合わせを組み込んだため、この問題はもう発生していないようです。

    • また、chocoが存在し、そこに戻ってくるため、Windowsの場合はpythonをインストールしてください。問題ありません。)update:をご覧ください。 boxstarterは、レシピを使用して新しいマシンのセットアップを自動化するのに役立ちます(または、実際にansibleまたはsaltを使用して卒業することもできます)。

    • 経験豊富なpython、Ruby開発者は、古いプロジェクトは、それらを再訪する必要があるときにエンジンのサイロ化されたバージョンが必要であることを教えてくれます:ウサギの穴)、rvmやvirtualenvのようなものが欲しいでしょう...

    • nvm(unixシステムlinuxおよびmacosxでのみ動作します)は、bashスクリプトのコレクションであるためです。 ZSHをZgenおよびTarrasch/zsh-autoenvプラグインと共にシェルとして使用することをお勧めします。

    • nodeenv、より可能性が高い... a python virtualenvと統合するプログラム。このような人もいます。問題ありませんが、チームはnvmを使用しています。
    • ただし、「理由」のためnvm-windowsを使用するほうが適切です。 Windowsでnodistを使用することをお勧めします。バーの方がはるかに優れた選択肢です。nodistがこれを処理するので、何らかのautoenvについて心配する必要はありません。

Windowsへのインストール:

  1. チョコレートをインストール
  2. choco install cmder nodejs python2 choco install python2
  3. http://scoop.shをインストールし、それを使用してpshazzをインストールします。
  4. 手動でグローバルにインストールされたノードのバージョンを削除します。
  5. nvm-windowsをインストール nodistをインストールします。
  6. visual-Studio 2012 Expressをインストールし、CPUサイクルを大事にする場合は決して起動しないでください。 Microsoftはbuild-essentialsに相当するものをリリースしているため、これはやり過ぎかもしれません。
  7. windows 7/10 64ビットSDKをインストールする

Linuxの問題:

tldr; nvmを使用します。以下以外の理由で。

  • グローバルnpm node_modulesパスをユーザーが所有するディレクトリに設定する必要があります(~/.local/share/npmの使用を開始しました)。嬉しいことに、これはnodejsのWindowsインストールが正しくなっていることを発見したものです(おそらく意図的ではないでしょう)。 nvmを使用する場合の非問題。
  • Ubuntuにはnodeというバイナリが既に存在するため、#!/usr/bin/env nodeはデフォルトでnodejsを実行しません。幸運なことに、debianシステムにはenvバイナリが放出するものを制御するためのきちんとした管理ツールがあります:update-alternatives。ここでシンボリックリンクを使用するための提案を無視してください。これは後で微妙な方法で問題を引き起こすだけです。 nvmを使用する場合も問題ありません。

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

参照:

41
airtonix

また、Windows 7を使用しており、Linux(debian)ゲストでVirtualboxを使用しています。コマンドラインでいくつかの作業を行った後、Windowsで[arround]をクリックする方が速いため、それをお勧めします。

もう1つの便利な機能は、USBスティックにVMを置くと、それを持ち運び、Virtualboxホストがインストールされているすべての場所で使用できるため、開発環境全体を持ち歩くことができることです。 。

Windowsでお気に入りのテキストエディタまたはブラウザを使用して、sambaをインストールし、ホームディレクトリをWindowsにマウントするだけで問題ありません。 VMはLAN内の単なる別のマシンであり、ブラウザをlocalhostでVM Ipにポイントするのではなく、問題ありません。

ここで明らかな欠点は、Linuxの経験がまったくない場合でも、Windowsに固執する必要があることです。

5
supernova

ちょうど私の2セントは多分さらに少ない:

3番目のオプションをお勧めします:windows/ubuntuセットアップをダブルインストールし(できれば bunt distが最も使いやすいgui) UNIX、さらにはiOSでさえも、Windowsをよりよく理解し、より優れたプログラマーを理解できるようになります。 Linuxはリソースに対して非常に効率的ですが、仮想ボックスが遅すぎる場合があります。

仮想マシンをインストールできる場合は、 linuxディストリビューション をインストールして、多くのWebが構築されているOSのこの言語/システムに慣れることもできます。

2
sivi

Git bashを使用して、windowsでnode.jsをコーディングするのは本当に楽しいです。 http://blog.nodester.com/post/19902515151/tips-for-windows-users

VirtualBoxを実行するよりも速く、簡単に思えます。実稼働に移行する前に、テストにVirtual Boxを使用していることを考えます。

0
Robert Peters