플랫폼에서 개발할 때 사용할 몇 가지 노드 셸 스크립트를 작성 중입니다. 우리는 Mac과 Windows 개발자가 있습니다. 한 인스턴스에서 .sh 파일을 실행하고 다른 인스턴스에서 .bat를 실행하기 위해 Node에서 확인할 수있는 변수가 있습니까?
플랫폼에서 개발할 때 사용할 몇 가지 노드 셸 스크립트를 작성 중입니다. 우리는 Mac과 Windows 개발자가 있습니다. 한 인스턴스에서 .sh 파일을 실행하고 다른 인스턴스에서 .bat를 실행하기 위해 Node에서 확인할 수있는 변수가 있습니까?
답변:
사용할 변수는 process.platform
Mac에서는 변수가를 반환합니다 darwin. Windows에서는 win3264 비트에서도 반환 됩니다.
현재 가능한 값 은 다음과 같습니다.
aixdarwinfreebsdlinuxopenbsdsunoswin32방금 jakeFile 상단에 이것을 설정했습니다.
var isWin = process.platform === "win32";
'win32'64 비트 운영 체제 에서도을 반환 합니다. 즉 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()대문자로 'Darwin'을 반환하는 것 같습니다. 안전상의 이유로 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")
}
const path = require('path');
if (path.sep === "\\") {
console.log("Windows");
} else {
console.log("Not Windows");
}
os코드를 읽을 때 더 표현적인 모듈을 사용 하는 것이 좋습니다.