Nvm-windows: .nvmrcをサポヌトする

䜜成日 2016幎01月08日  Â·  18コメント  Â·  ゜ヌス: coreybutler/nvm-windows

䜿甚するバヌゞョンを指定するプロゞェクトを蚱可したす。
nvmの䜿甚法を参照しおください

たたはおそらくpackage.json゚ンゞンからクロヌれットの利甚可胜なバヌゞョンを解析したす

enhancement request wontfix

最も参考になるコメント

.nvmrcのサポヌトは、CIシステムでNVMを䜿甚する䞊で非垞に重芁な偎面です。 特にnvmずの互換性が倱われるため、package.jsonの提案をリンクしたせんが、.nvmrcをサポヌトするプルリク゚ストは受け入れられたすか

党おのコメント18件

これは私が行きたいルヌトではないず思いたす。 䞻な理由は、ノヌドバむナリを再䜜成/暡倣するには、非垞に醜いハッキングが必芁になるためです。 たずえば、 node index.js呌び出すず、ハッキング/停造されたnode.exeは、最初にpackage.jsonファむル存圚する堎合を解析しおバヌゞョンを刀別しおから、実際のnode.exe実行する必芁がありたす。適切なバヌゞョンの

他のいく぀かの同様のプロゞェクトは、これを達成するために.batファむルを䜿甚しようずしたした。 このアプロヌチは脆匱であり、アヌキテクチャの䞻な目的に反したす。

たた、これに察する需芁が広たっおいるずは思いたせん。

.nvmrcのサポヌトは、CIシステムでNVMを䜿甚する䞊で非垞に重芁な偎面です。 特にnvmずの互換性が倱われるため、package.jsonの提案をリンクしたせんが、.nvmrcをサポヌトするプルリク゚ストは受け入れられたすか

@ gruber76-私はおそらくこれに関するPRを受け入れたせん。

.nvmrc 、 package.json ...どちらも同じ厄介なハックが必芁です。

@coreybutlerこれをサポヌトしたくないずいうあなたの論理的根拠を理解できたせん。 この機胜を䜿甚するず、バヌゞョン番号を指定せずにnvmが呌び出されるたびに、.nvmrcファむルを調べるこずにフォヌルバックするだけではないでしょうか。 したがっお、あなたはどのような厄介なハックに぀いお話しおいるのですか

厄介なハック Windows甚のシンボリックリンクを曞き盎したす。

NVM for Windowsは、シンボリックリンクタヌゲットを目的の物理ノヌドむンストヌルディレクトリに倉曎するこずで機胜したす。 これはシステム党䜓の倉曎です。

.nvmrcファむルでバヌゞョン0.12.0を指定しおスクリプトを起動し、次に.nvmrcなしで2番目のスクリプトを起動するずしたす。 シンボリックリンクは最初のむンスタンス化からv0.12.0を指したす。 2番目のスクリプトが.nvmrcない他のものv4.2.6などを必芁ずする堎合、倱敗したす。 これにより、真のプロセス分離がないため、シンボリックリンクを䜿甚するずきに環境が䞍安定になりたす。

プロセスごずにバヌゞョンを真に分離する唯䞀の方法は、オペレヌティングシステムに蚱可するのではなく、スクリプトが芁求しおいるバヌゞョンにnvm.exeリダむレクトさせるこずです。 オペレヌティングシステムがすでに行っおいるこずを再珟したくありたせん。

人々が本圓にプロセス/プロゞェクトごずのアプロヌチを䜿甚したい堎合、より適切な解決策はランタむム環境を分離するこずです。 個人的には、Dockerを䜿甚しおいたす。

ここで私の無知を蚱しおください。 私の䞻なナヌスケヌスは、耇数のチヌムでbower / grunt / gulpなどを䜿甚しおノヌド/ Webアプリケヌションを開発するこずです。 私にずっお、5分以内に耇数のバヌゞョンを実行するこずは非垞にたれです。 このナヌスケヌスの堎合、.nvmrcファむルは、私のチヌムがどのノヌドを実行するかを指定する方法です。

あなたが説明する状況スクリプトAずスクリプトBで、スクリプトAたたはスクリプトAのナヌザヌがバヌゞョンを蚭定するためにnvmを呌び出しおから蚭定を忘れるよりも、.nvmrcのサポヌトがいかに面倒であるかを理解するのに苊劎しおいたす。スクリプトBを実行する前にそれを実行したす。しかし、私よりもはるかに難しいコアであるnvmの䞀般的な䜿甚䟋がいく぀かあるず思いたす。 たずえば、CIサヌバヌの負荷が高い堎合などです。

私はそれを必芁ずする他の人に提䟛するためのハッキヌ回避策を持っおいたす。 実行前のbatスクリプトでは次のようになりたす。

set /p nodev=<.nvmrc
nvm install %nodev%
nvm use %nodev%

nvmコマンドを入れおnpmスクリプトに必芁なバヌゞョンを蚭定しおみたせんか

スティヌブ・リヌ
モバむルデバむスから送信されたした入力ミスをお蚱しください
2016幎3月3日16:50、「gruber76」 [email protected]は次のように曞いおいたす。

ここで私の無知を蚱しおください。 私の䞻なナヌスケヌスは開発です
耇数のチヌムでbower / grunt / gulpなどを䜿甚するノヌド/ Webアプリケヌション。 にずっお
私、耇数のバヌゞョンが実行されるこずは非垞にたれです
お互いの5分。 このナヌスケヌスでは、.nvmrcファむルが私の
チヌムは、ノヌドが実行する必芁があるこずを指定したす。

あなたが説明する状況で私は芋づらいですスクリプトA察
スクリプトB.nvmrcをサポヌトするこずは、
スクリプトAたたはスクリプトAのナヌザヌがnvmを呌び出しおバヌゞョンを蚭定しおから、
スクリプトBを実行する前に蚭定するのを忘れおいたす。
私よりもはるかに難しいコアであるnvmのいく぀かの䞀般的なナヌスケヌス。
たずえば、CIサヌバヌの負荷が高い堎合などです。

私はそれを必芁ずする他の人に提䟛するためのハッキヌ回避策を持っおいたす。 NS
実行前のbatスクリプトで次のようになりたす。

/ p nodev = <。nvmrcを蚭定したす
nvmむンストヌルnodev
nvmはnodevを䜿甚したす

—
このメヌルに盎接返信するか、GitHubで衚瀺しおください
https://github.com/coreybutler/nvm-windows/issues/128#issuecomment -191852401
。

.nvmrcファむルをサポヌトするこずは本圓に圹に立ちたす。 倚くのプロゞェクトがあり、それらすべおが同じバヌゞョンのノヌドを実行しおいるわけではありたせん。 .nvmrcファむルは各リポゞトリのルヌトにあり、特定のプロゞェクトで正しいバヌゞョンのノヌドが䜿甚されおいるこずを確認したす。

ちなみに、 nvm install埌にnvm useが続く必芁があるのもちょっず面倒です。 むンストヌル埌に2番目のステップが必芁になる理由を知りたいです。 むンストヌルず䜿甚の違いはわかりたすが、誰かがダりンロヌドしおむンストヌルしおも䜿甚しないずいうナヌスケヌスはあるのでしょうか。

これに察する回避策は、各プロゞェクトのルヌトにあるinstall-node.jsずいう名前のファむルがあるこずです。 プロゞェクトに切り替えるずきはい぀でも、コマンドラむンからnode install-nodeを実行したす。 install-node.jsファむルの内容は次のずおりです。

var childProcess = require('child_process')
var fs = require('fs')

var nodeVersion = fs.readFileSync('.nvmrc', 'utf8').trim()

var command = "nvm install " + nodeVersion + " && nvm use " + nodeVersion
console.log('executing command: ' + command)
childProcess.exec(command, function(error, stdout, stderr) {
  if (stdout) console.log(stdout.toString())
  if (stderr) console.error(stderr.toString())
  if (error) console.error(error)
})

@ josh-egan-ps- installずuseの分離は、䞻に倧芏暡な環境構成のためnvm install -u 5.9.1ようなフラグをむンストヌルしお自動的に䜿甚するか、バヌゞョンを自動的に䜿甚しおフラグを䜿甚しないこずは完党に合理的ず思われたす。 私は間違いなくこれを远加するこずを怜蚎したす。

すべおの人のために-プロゞェクトごずに切り替える必芁がある堎合は、package.jsonのnpm startスクリプトセクションにnvm use x.x.x && node index.jsを配眮するこずを怜蚎しおください。 䞀般的なベストプラクティスは、垞にnpm startを䜿甚しおノヌドアプリを起動するこずです。

すべおの人のために-プロゞェクトごずに切り替える必芁がある堎合は、package.jsonのnpmstartスクリプトセクションにnvmuse xxx && nodeindex.jsを配眮するこずを怜蚎しおください。 䞀般的なベストプラクティスは、垞にnpmstartを䜿甚しおノヌドアプリを起動するこずです。

ノヌド/ npmのバヌゞョンに䟝存するむンストヌル䞭に䜿甚されるnpm_build_スクリプトの堎合、実際には手遅れになる可胜性がありたす。 たたは、gruntなどの他のツヌルがすぐに実行されたす。間違ったバヌゞョンのnode / npmを䜿甚するず、むンストヌル䞭に倱敗する可胜性がありたす。 たたは、間違ったバヌゞョンを䜿甚するず他の問題が発生したす。ずころで、_everything_をロヌカルにむンストヌルする぀たり、-gではない他のベストプラクティスを想定しおいるため、バヌゞョンの䟝存関係が問題になるこずはありたせん。

したがっお、 npm installを䜿甚しおすべおをセットアップするこずをお勧めしたす。 次に、nvmuseを䜿甚するためのプレむンストヌルステップを远加できたす。 䟋远加

    "preinstall": "nvm use x.x.x",

元のnpmバヌゞョンが芪プロセスで実行されおいる堎合でも、これで問題ありたせん。 むンストヌルステップで新しいシェルが起動するため、すべおのアクションで新しいノヌドずnpmが取埗されたす。

むンストヌルよりも事前開始ステップを远加するこずもできたす。

@ SteveALee-ええ、そうです、私の以前の提案はうたく

@coreybutler結局私はこれに行きたした

"preinstall":"nvm use 4.4.1 || echo nvm not found: check node version && pause",

おそらくnvm use -i x.x.xオプションが良いでしょうか ぀たり、ただむンストヌルされおいない堎合はむンストヌルしたすか

私は少なくずもこれの䞀郚を実装するこずを提案したいず思いたす

Linux / Macでは、 .nvmrcファむルが存圚するフォルダヌで、具䜓的なバヌゞョンを指定せずにnvm useを実行でき、 .nvmrc内容に䞀臎するむンストヌル枈みバヌゞョンが取埗されたす。有効化。 ファむルに8ず蚘茉されおいる堎合は、最新のむンストヌル枈みバヌゞョンのノヌド8がむンストヌルされたす。

私のシステムでこれをcdをオヌバヌロヌドするスクリプトず組み合わせお、ディレクトリにcd入れ、適切なバヌゞョンのノヌドをアクティブ化できるようにしたす。このスクリプトは.bashrcたす。

# Support .nvmrc
load-nvmrc() {
  if [[ -f .nvmrc && -r .nvmrc ]]; then
    nvm use
  elif [[ $(nvm version) != $(nvm version default)  ]]; then
    echo "Reverting to nvm default version"
    nvm use default
  fi
}
# Override `cd` to auto-load correct version of Node on enterting directory.
cd() { builtin cd "$@"; 'load-nvmrc'; }

nvmがこれらのファむルを尊重しおいれば、これはWindowsでも簡単に機胜したす。

.nvmrcはデフォルトでは実装されたせん。 しかし; ロヌドマップにはフックサポヌトの蚈画がありたすhttps://github.com/coreybutler/nvm-windows/issues/190。 pre-useスクリプトを䜿甚しお、必芁なファむルpackage.json、.nvmrc、たたはその他の遞択したものを含むに応じおバヌゞョンを調敎できたす。

この問題はほが解消されおいるように思われるため、.nvmrcファむルに1桁のノヌドバヌゞョンが含たれおいる堎合に、「nvmuse」および「nvminstall」の機胜を暡倣する回避策のPowershellスクリプトがありたす。

nvm install (Get-Content .nvmrc)は正垞に機胜したすが、 nvm use (Get-Content .nvmrc)は機胜したせん1桁のバヌゞョンがむンストヌルに枡されるず、そのノヌドバヌゞョンの最新リビゞョンがむンストヌルされたすが、 nvm useは1桁の数字は、最新のものを取埗する代わりに、それに「.0.0」を远加したす。

@coreybutler nvm.goの「use」コマンドを曎新しおinstallず同じコヌドを䜿甚するず、この修正は䞍芁になりたす぀たり。
if len(version) == 1 { version = findLatestSubVersion(version) } else { version = cleanVersion(version) }

次のスクリプトは「nvmlistavailable」を䜿甚し、.nvmrcファむルのバヌゞョンず䞀臎する最も高いLTSバヌゞョンのリストをフィルタリングしおから、「nvmuse」したす。 むンストヌルされおいない堎合は、 'nvm install's it then' nvm use'it。
((nvm use (nvm list available | Where-Object -FilterScript { $_ -like ('* ' + (Get-Content .nvmrc)) + '.*'})[0].split('|')[2].trim()) -like '*not installed*') -and (nvm install (nvm list available | Where-Object -FilterScript { $_ -like ('* ' + (Get-Content .nvmrc) + '.*') })[0].split('|')[2]) -and (nvm use (nvm list available | Where-Object -FilterScript { $_ -like ('* ' + (Get-Content .nvmrc) + '.*') })[0].split('|')[2].trim())

.nvmrcファむルから読み取るためのnvm䜿甚のサポヌトを芁求したいだけです。 これにより、MacずWindows間のノヌド開発゚クスペリ゚ンスがシヌムレスになりたす。

修正されたため、たたは倉曎されないため、これは閉じられたすか

* nixバヌゞョンず同じAPIを䜿甚する別のWindows互換バヌゞョンのnvmありたすか

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡