Maison >interface Web >js tutoriel >Explication détaillée de l'utilisation de Node.js pour écrire des instructions de génération multiplateforme
La chose la plus puissante à propos de Node.js est qu'il est « multiplateforme ». Avec un peu de soin lors du codage, votre code fonctionnera sur les plates-formes Windows, Linux et OSX. L'article suivant explique principalement comment utiliser Node.js pour écrire des déclarations d'apparition multiplateformes. Les amis dans le besoin peuvent s'y référer.
Préface
Node.js est multiplateforme, ce qui signifie qu'il peut fonctionner sur les plateformes Windows, OSX et Linux. De nombreux développeurs Node.js développent sur OSX puis déploient le code sur des serveurs Linux. Étant donné qu'OSX et Linux sont basés sur Unix, ils ont beaucoup en commun. Windows est également une plate-forme officiellement prise en charge pour Node.js. Tant que vous écrivez le code correctement, vous pouvez l'exécuter sur différentes plates-formes sans aucune pression.
Il existe une fonction spawn sous le module child_process de Node.js, qui peut être utilisée pour appeler des commandes sur le système. Par exemple, sous Linux, macOS et d'autres systèmes, nous pouvons exécuter
const spawn = require('child_process').spawn; spawn('npm', { stdio: 'inherit' });pour appeler la commande npm. Cependant, la même instruction signalera une erreur lors de son exécution sous 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:3Parce que sous Windows, lorsque nous exécutons npm, nous exécutons en fait le lot npm.cmd, et sous Windows, le traitement par lots .cmd , .bat ne peut pas être exécuté indépendamment de l’interpréteur cmd.exe. Par conséquent, nous devons appeler explicitement cmd
spawn('cmd', ['/c', 'npm'], { stdio: 'inherit' });ou utiliser lors de l'appel de la fonction spawn, définissez l'option shell sur true pour Appelez implicitement cmd (cette option a été ajoutée à partir de la version Node.js v6)
spawn('npm', { stdio: 'inherit', shell: true });De plus, bien qu'il ne soit pas nécessaire de la définir sous Linux, Option Shell macOS et autres systèmes, la commande peut être exécutée normalement ; définir Shell sur true n'entravera pas l'exécution de la commande, mais générera un processus shell inutile supplémentaire, affectant les performances. Par conséquent, si vous souhaitez écrire une commande d'apparition multiplateforme sans ajouter de surcharge supplémentaire, vous pouvez l'écrire comme ceci
const process = require('process'); const { spawn } = require('child_process'); spawn('npm', { stdio: 'inherit', // 仅在当前运行环境为 Windows 时,才使用 shell shell: process.platform === 'win32' });Module tiers cross-spawn
npm install cross-spawn
Utilisation
const spawn = require('cross-spawn'); spawn('npm', { stdio: 'inherit' });
Pour des explications plus détaillées sur l'utilisation de Node.js pour écrire des instructions de spawn multiplateformes, veuillez faire attention au site Web PHP chinois !