プラットフォームで開発するときに使用するノードシェルスクリプトをいくつか書いています。MacとWindowsの両方の開発者がいます。あるインスタンスで.shファイルを実行し、別のインスタンスで.batを実行するためにノードでチェックできる変数はありますか?
プラットフォームで開発するときに使用するノードシェルスクリプトをいくつか書いています。MacとWindowsの両方の開発者がいます。あるインスタンスで.shファイルを実行し、別のインスタンスで.batを実行するためにノードでチェックできる変数はありますか?
回答:
使用する変数は process.platform
Macでは、変数はを返しますdarwin
。Windowsではwin32
(64ビットでも)戻ります。
現在可能な値は次のとおりです。
aix
darwin
freebsd
linux
openbsd
sunos
win32
これをjakeFileの上部に設定するだけです。
var isWin = process.platform === "win32";
'win32'
64ビットのオペレーションシステムでも、windowsはを返します。つまりprocess.platform === 'win32'
、十分です
process.platform === 'win32'
正規表現よりも簡潔で、明らかに高速です。Mauvisが投稿した正規表現は、より良い品質チェックのようです。Node / Windowsがwin64やwinARMなどを返すことにした場合は、文字列比較で大量のコードが壊れます。私たちが探しているのは、それがWindowsかどうかだけです。アーチではありません。しばらく文字列比較を使用した後、この時点で正規表現に投票します。正規表現はより安全に「感じ」ます。
Node.js v6(以降)には、os
オペレーティングシステム関連のユーティリティメソッドを提供する専用モジュールがあります。
私のWindows 10マシンでは、次のように報告されます。
var os = require('os');
console.log(os.type()); // "Windows_NT"
console.log(os.release()); // "10.0.14393"
console.log(os.platform()); // "win32"
ここで完全なドキュメントを読むことができます:https : //nodejs.org/api/os.html#os_os_type
Node.jsのOSネイティブモジュールを探しています。
v4:https : //nodejs.org/dist/latest-v4.x/docs/api/os.html#os_os_platform
またはv5:https : //nodejs.org/dist/latest-v5.x/docs/api/os.html#os_os_platform
os.platform()
オペレーティングシステムプラットフォームを返します。可能な値は、「darwin」、「freebsd」、「linux」、「sunos」、または「win32」です。process.platformの値を返します。
var opsys = process.platform;
if (opsys == "darwin") {
opsys = "MacOS";
} else if (opsys == "win32" || opsys == "win64") {
opsys = "Windows";
} else if (opsys == "linux") {
opsys = "Linux";
}
console.log(opsys) // I don't know what linux is.
const os = require("os"); // Comes with node.js
console.log(os.type());
os.type()
大文字で「ダーウィン」を返すようです。安全上の理由から、os.type().toLowerCase()
値を比較する前に呼び出すほうがよい場合があります。
これは私にとってはうまくいきます
var osvar = process.platform;
if (osvar == 'darwin') {
console.log("you are on a mac os");
}else if(osvar == 'win32'){
console.log("you are on a windows os")
}else{
console.log("unknown os")
}
64ビットウィンドウで32ビットノードを使用している場合(node-webkitまたはatom-shell開発者のように)、process.platformはwin32をエコーします。
使用する
function isOSWin64() {
return process.arch === 'x64' || process.env.hasOwnProperty('PROCESSOR_ARCHITEW6432');
}
(詳細はこちらをご覧ください)
const path = require('path');
if (path.sep === "\\") {
console.log("Windows");
} else {
console.log("Not Windows");
}
os
ますが、コードを読むときにより表現力のあるモジュールを使用することを好みます。