>  기사  >  웹 프론트엔드  >  Node.js를 사용하여 크로스 플랫폼 생성 문을 작성하는 방법에 대한 자세한 설명

Node.js를 사용하여 크로스 플랫폼 생성 문을 작성하는 방법에 대한 자세한 설명

高洛峰
高洛峰원래의
2017-02-15 17:25:242531검색

Node.js의 가장 강력한 점은 '크로스 플랫폼'입니다. 코딩할 때 약간만 주의하면 코드가 Windows, Linux 및 OSX 플랫폼에서 작동합니다. 다음 글에서는 Node.js를 사용하여 크로스 플랫폼 스폰 구문을 작성하는 방법을 주로 소개합니다. 필요한 친구들이 참고할 수 있습니다.

서문

Node.js는 크로스 플랫폼입니다. 즉, Windows, OSX 및 Linux 플랫폼에서 실행될 수 있습니다. 많은 Node.js 개발자는 OSX에서 개발한 다음 코드를 Linux 서버에 배포합니다. OSX와 Linux는 모두 Unix를 기반으로 하기 때문에 공통점이 많습니다. Windows는 Node.js가 공식적으로 지원되는 플랫폼이기도 합니다. 올바른 방식으로 코드를 작성하기만 하면 다양한 플랫폼에서 부담 없이 실행할 수 있습니다.

Node.js의 child_process 모듈 아래에는 시스템에서 명령을 호출하는 데 사용할 수 있는 생성 함수가 있습니다. 예를 들어 Linux, macOS 및 기타 시스템에서는

const spawn = require('child_process').spawn;

spawn('npm', {
 stdio: 'inherit'
});

npm 명령을 호출합니다.

그러나 Windows에서 동일한 명령문을 실행하면 오류가 보고됩니다.

Error: spawn npm ENOENT
 at exports._errnoException (util.js:855:11)
 at Process.ChildProcess._handle.onexit (internal/child_process.js:178:32)
 at onErrorNT (internal/child_process.js:344:16)
 at nextTickCallbackWith2Args (node.js:455:9)
 at process._tickCallback (node.js:369:17)
 at Function.Module.runMain (module.js:432:11)
 at startup (node.js:141:18)
 at node.js:980:3

Windows에서는 npm을 실행하면 실제로 npm.cmd 배치를 실행하고, Windows에서는 .cmd, .bat 배치 처리를 할 수 없기 때문입니다. cmd.exe 인터프리터와 독립적으로 실행됩니다.

따라서 명시적으로 cmd를 호출해야 합니다

spawn('cmd', ['/c', 'npm'], {
 stdio: 'inherit'
});

또는 generate 함수를 호출할 때 사용하고, 암시적으로 호출하려면 쉘 옵션을 true로 설정하세요. 로컬에서 cmd (이 옵션은 Node.js v6 버전에서 추가되었습니다)

spawn('npm', {
 stdio: 'inherit',
 shell: true
});

또한 Linux, macOS 및 Linux에서는 셸 옵션을 설정할 필요가 없지만 다른 시스템에서는 명령을 정상적으로 실행할 수도 있습니다. 쉘을 true로 설정하면 명령 실행이 방해되지 않지만 불필요한 쉘 프로세스가 추가로 생성되어 성능에 영향을 미칩니다.

그러므로 오버헤드를 추가하지 않고 크로스 플랫폼 스폰 명령을 작성하려면 이렇게 작성하면 됩니다.

const process = require('process');
const { spawn } = require('child_process');

spawn('npm', {
 stdio: 'inherit',
 // 仅在当前运行环境为 Windows 时,才使用 shell
 shell: process.platform === 'win32'
});

셋째 -party module cross-spawn


스폰 함수의 크로스 플랫폼 작성 방법과 관련하여 코드를 직접 작성할 때 처리하는 것 외에도 관련 세부 사항을 캡슐화하는 타사 모듈도 있습니다. 교차 산란과 같은.

이 모듈을 사용하면 스폰 함수 호출 시 현재 실행 중인 플랫폼을 기반으로 주어진 명령을 실행하기 위한 쉘 생성 여부를 자동으로 결정할 수 있습니다.

게다가

  • v6보다 낮은 Node.js 버전도 지원할 수 있습니다(셸 옵션을 사용하려면 최소한 Node.js v6이 필요함).

  • shebang에 대한 크로스 플랫폼 지원

  • 명령 및 매개변수에서 문자를 이스케이프하는 것이 더 편리합니다.


설치

npm install cross-spawn

사용법

const spawn = require('cross-spawn');

spawn('npm', {
 stdio: 'inherit'
});


Node.js를 사용하여 크로스 플랫폼 생성 문을 작성하는 방법에 대한 자세한 설명은 PHP 중국어 웹사이트를 참고하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.