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