Bir platformda geliştirirken kullanmak için birkaç düğüm kabuğu komut dosyası yazıyorum. Hem Mac hem de Windows geliştiricimiz var. Düğümde bir örnekte bir .sh dosyası ve bir örnekte .bat çalıştırmak için kontrol edebileceğim bir değişken var mı?
Bir platformda geliştirirken kullanmak için birkaç düğüm kabuğu komut dosyası yazıyorum. Hem Mac hem de Windows geliştiricimiz var. Düğümde bir örnekte bir .sh dosyası ve bir örnekte .bat çalıştırmak için kontrol edebileceğim bir değişken var mı?
Yanıtlar:
Kullanılacak değişken process.platform
Mac'te değişken geri döner darwin. Windows'da geri döner win32(64 bit olsa bile).
aixdarwinfreebsdlinuxopenbsdsunoswin32Bunu jakeFile'ımın en üstüne ayarladım:
var isWin = process.platform === "win32";
'win32'64 bit işletim sistemlerinde bile geri döner . yani process.platform === 'win32'yeterlidir
process.platform === 'win32'normalden daha kısa ve daha hızlı görünüyor. Mauvis'in yazdığı regex, daha iyi bir kalite kontrolü gibi görünüyor . Düğüm / Windows her biri win64, winARM, vb. Veya başka bir şey döndürmeye karar verdiyse, dize karşılaştırmasıyla bir ton kod kırılır. Tek aradığımız Windows olup olmadığı. Kemer değil. Ben dizge karşılaştırma bir süre kullandıktan sonra regex için oy, 'regex' daha güvenli hissediyor.
Node.js v6 (ve üstü) ile os, işletim sistemiyle ilgili bir dizi yardımcı yöntem sağlayan özel bir modül vardır .
Windows 10 makinemde aşağıdakileri rapor ediyor:
var os = require('os');
console.log(os.type()); // "Windows_NT"
console.log(os.release()); // "10.0.14393"
console.log(os.platform()); // "win32"
Belgelerin tamamını buradan okuyabilirsiniz: https://nodejs.org/api/os.html#os_os_type
Node.js için işletim sistemi yerel modülünü arıyorsunuz:
sürüm 4: https://nodejs.org/dist/latest-v4.x/docs/api/os.html#os_os_platform
veya v5: https://nodejs.org/dist/latest-v5.x/docs/api/os.html#os_os_platform
os.platform ()
İşletim sistemi platformunu döndürür. Olası değerler 'darwin', 'freebsd', 'linux', 'sunos' veya 'win32'. Process.platform'un değerini döndürür.
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()'Darwin'i büyük harfle geri dönüyor gibi görünüyor. Güvenlik nedeniyle, os.type().toLowerCase()değerleri karşılaştırmadan önce aramak daha iyi olabilir .
Bu benim için iyi çalışıyor
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 bit pencerelerde (düğüm-webkit veya atom kabuğu geliştiricileri gibi) 32 bit düğümü kullandığınızda, process.platform win32'yi yankılanacaktır
kullanım
function isOSWin64() {
return process.arch === 'x64' || process.env.hasOwnProperty('PROCESSOR_ARCHITEW6432');
}
( ayrıntılar için buraya bakın)
const path = require('path');
if (path.sep === "\\") {
console.log("Windows");
} else {
console.log("Not Windows");
}
os, kodu okurken daha etkileyici olan modülü kullanmayı tercih ederim .
Mac makinedeki Windows VM'de düğüm js kodumu çalıştırırken aynı sorunla karşı karşıyaydım. Aşağıdaki kod hile yaptı.
değiştirmek
process.platform == 'win32'
ile
const os = gerektirir ('os');
os.platform () == 'win32';