Comment déterminer le système d’exploitation actuel avec Node.js

J’écris quelques scripts shell de nœuds à utiliser lors du développement sur une plate-forme. Nous avons des développeurs Mac et Windows. Existe-t-il une variable que je peux rechercher dans Node pour exécuter un fichier .sh dans une instance et .bat dans une autre?

La variable à utiliser serait process.platform

Sur Mac, la variable retourne darwin . Sous Windows, il retourne win32 (même sur 64 bits).

Les valeurs possibles sont: ‘darwin’, ‘freebsd’, ‘linux’, ‘sunos’ ou ‘win32’

Je viens de définir ceci en haut de mon jakeFile:

 var isWin = process.platform === "win32"; 

Vous recherchez le module natif du système d’exploitation pour Node.js:

v4: https://nodejs.org/dist/latest-v4.x/docs/api/os.html#os_os_platform

ou v5: https://nodejs.org/dist/latest-v5.x/docs/api/os.html#os_os_platform

os.platform ()

Renvoie la plate-forme du système d’exploitation. Les valeurs possibles sont “darwin”, “freebsd”, “linux”, “sunos” ou “win32”. Renvoie la valeur de process.platform.

Avec Node.js v6 (et supérieur), il existe un module os dédié, qui fournit un certain nombre de méthodes utilitaires liées au système d’exploitation.

Sur mon ordinateur Windows 10, il signale ce qui suit:

 var os = require('os'); console.log(os.type()); // "Windows_NT" console.log(os.release()); // "10.0.14393" console.log(os.platform()); // "win32" 

Vous pouvez lire sa documentation complète ici: https://nodejs.org/api/os.html

lorsque vous utilisez un nœud 32bits sur des fenêtres 64bits (comme node-webkit ou des développeurs atom-shell), process.platform fera écho à win32

utilisation

  function isOSWin64() { return process.arch === 'x64' || process.env.hasOwnProperty('PROCESSOR_ARCHITEW6432'); } 

(cochez ici pour plus de détails)

 var isWin64 = process.env.hasOwnProperty('ProgramFiles(x86)'); 
 const path = require('path'); if (path.sep === "\\") { console.log("Windows"); } else { console.log("Not Windows"); } 

Fonctionne bien pour moi

 if (/^win/i.test(process.platform)) { // TODO: Windows } else { // TODO: Linux, Mac or something else } 

Le modificateur i est utilisé pour effectuer une correspondance insensible à la casse.

Cela fonctionne bien pour moi

 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") }