Maison  >  Article  >  interface Web  >  Comment empaqueter et publier nodejs

Comment empaqueter et publier nodejs

王林
王林original
2023-05-14 09:36:374896parcourir

Node.js est une plateforme de développement très populaire et jouit d'une grande réputation auprès des développeurs. Lors du développement d'une application Node.js, nous devons envisager de la conditionner sous une forme pouvant être utilisée dans d'autres environnements. Cet article explique comment empaqueter et publier des applications Node.js dans différents environnements.

1. Créer une application Node.js de base

Avant de commencer à empaqueter et à publier l'application Node.js, nous devons créer une application Node.js de base. Une méthode très basique est proposée ici à des fins pédagogiques uniquement. Nous commençons par créer une structure de répertoires simple, puis ajoutons deux fichiers au projet. Le premier fichier est server.js, qui sera utilisé pour créer un serveur HTTP. Le deuxième fichier est package.json, qui spécifie les informations de métadonnées et les dépendances de notre application. server.js,它将用于创建一个 HTTP 服务器。第二个文件是 package.json,它指定了我们应用的元数据信息和依赖关系。

// server.js

const http = require('http');

const hostname = '127.0.0.1';
const port = 3000;

const server = http.createServer((req, res) => {
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end('Hello, World!
');
});

server.listen(port, hostname, () => {
  console.log(`Server running at http://${hostname}:${port}/`);
});
// package.json

{
  "name": "my-node-app",
  "version": "1.0.0",
  "description": "A simple Node.js app",
  "main": "server.js",
  "dependencies": {
    "express": "^4.17.1"
  }
}

这是一个非常基本的 Node.js 应用程序,它仅使用 HTTP 模块创建了一个服务器并返回 "Hello, World!",还使用了 Express 库,用于更轻松地处理 HTTP 请求。

2. 打包和发布 Node.js 应用的方式

要打包并发布 Node.js 应用程序,我们需要考虑目标环境和用途。下面介绍几种打包和发布 Node.js 应用程序的常用方法。

2.1. 打包成 NPM 包

从其出现以来,NPM 一直是 Node.js 应用程序的主要包管理器。使用 npm init 命令可以创建一个基本的 package.json 文件,并指定我们应用的依赖关系。当在项目中安装 NPM 包时,我们可以使用生产或开发依赖项进行区分。打包 Python 库时,可以使用类似的依赖项来指定所需要的第三方库。

# 初始化创建 package.json 文件
npm init

# 安装 Express 库并添加到 package.json 文件
npm install express --save

然后,运行 npm pack 命令,我们将得到一个 .tgz 包文件,其中包含我们的代码和其它必要的文件。

# 打包成 .tgz 文件
npm pack

.tgz 文件可以在其它项目中直接安装和使用,也可以上传到 [NPM 注册表](https://www.npmjs.com/),供其他开发者下载和使用。要发布 NPM 包,需要在 [NPM 注册表](https://www.npmjs.com/) 中创建一个账户,然后使用 npm login

# 登录进入 NPM 账户
npm login

# 发布 NPM 包
npm publish
# 使用 Node.js 14 镜像作为基础镜像
FROM node:14

# 将工作目录切换为 /app
WORKDIR /app

# 复制 package.json 和 package-lock.json 文件到容器中
COPY package*.json ./

# 安装所有生产依赖包
RUN npm install --only=production

# 复制所有应用程序文件(包括 node_modules 文件夹)
COPY . .

# 暴露 3000 端口以供外部访问
EXPOSE 3000

# 在容器中运行应用程序
CMD [ "node", "server.js" ]

Il s'agit d'une application Node.js très basique qui utilise simplement le module HTTP pour créer un serveur et renvoyer "Hello, World!", et utilise également la bibliothèque Express pour gérer plus facilement les requêtes HTTP.

2. Façons de packager et de publier des applications Node.js

Pour packager et publier des applications Node.js, nous devons prendre en compte l'environnement et l'utilisation cibles. Voici quelques méthodes courantes pour empaqueter et publier des applications Node.js.

2.1. Conditionnement dans des packages NPM

Depuis sa création, NPM est le principal gestionnaire de packages pour les applications Node.js. Utilisez la commande npm init pour créer un fichier package.json de base et spécifier les dépendances de notre application. Lors de l'installation de packages NPM dans un projet, nous pouvons différencier en utilisant des dépendances de production ou de développement. Lors du packaging d'une bibliothèque Python, vous pouvez utiliser des dépendances similaires pour spécifier les bibliothèques tierces requises.

# 创建并运行容器
docker build -t my-node-app .
docker run -p 80:3000 -d my-node-app

Ensuite, exécutez la commande npm pack et nous obtiendrons un fichier de package .tgz qui contient notre code et d'autres fichiers nécessaires.

# 全局安装 pkg 模块
npm install -g pkg

Le fichier .tgz peut être installé et utilisé directement dans d'autres projets, ou téléchargé dans le [registre NPM](https://www.npmjs.com/ ) pour que d'autres développeurs puissent le télécharger et l'utiliser. Pour publier un package NPM, vous devez créer un compte dans le [registre NPM](https://www.npmjs.com/) et vous connecter à l'aide de la commande npm login.

# 打包成可执行文件
pkg . --output my-node-app.exe

2.2. Conditionnement dans des conteneurs Docker

Docker peut empaqueter les applications Node.js dans des conteneurs pour garantir la cohérence lors de l'exécution d'applications dans différents environnements. En empaquetant votre application dans un conteneur Docker, vous pouvez l'exécuter partout où Docker est pris en charge sans vous soucier des dépendances ou des environnements d'exécution obsolètes.

Pour générer un conteneur Docker, nous devons écrire un Dockerfile qui spécifie les dépendances et l'installation de l'application.

rrreee

Exécutez la commande suivante dans le répertoire où se trouve le fichier Dockerfile pour générer un conteneur Docker.

rrreee

À l'aide de la commande ci-dessus, nous avons réussi à empaqueter l'application Node.js dans une image Docker et à l'exécuter avec succès dans le conteneur.

2.3. Package dans un fichier exécutable du serveur

À l'aide de l'outil [pkg](https://github.com/vercel/pkg), nous pouvons appliquer Node.js Les programmes sont présentés sous forme de fichiers exécutables. Cet outil permet d'exécuter notre application sans installer Node.js ou NPM, et la gestion des dépendances est très simple.

Tout d'abord, utilisez npm pour installer l'outil pkg.

rrreee

Ensuite, exécutez la commande suivante dans le terminal pour empaqueter et générer le fichier exécutable.

rrreee

2.4. Packaging dans des services sans serveur pour les plateformes cloud

Dans les plateformes cloud, la meilleure façon de packager des applications Node.js est de créer des services sans serveur. Cette approche évite les tracas liés à la gestion de l'infrastructure et du réseau et permet une mise à l'échelle adaptative en cas de besoin. #🎜🎜##🎜🎜#Par exemple, en utilisant le service AWS Lambda, vous pouvez empaqueter et publier des applications Node.js sans avoir à gérer vous-même des machines virtuelles ou des serveurs. Créez simplement une fonction Lambda et téléchargez le code de la fonction sur AWS Lambda. #🎜🎜##🎜🎜#Tout d'abord, nous devons créer une fonction dans AWS Lambda et télécharger notre application Node.js. Lors de la création de la fonction, sélectionnez Node.js comme environnement d'exécution, puis conditionnez notre code sous forme de fichier ZIP pour le téléchargement. #🎜🎜##🎜🎜#Lorsque la fonction Lambda est appelée, l'environnement informatique local est démarré et le code est ensuite chargé dans cet environnement pour s'exécuter. Par conséquent, nous n’avons pas besoin de gérer manuellement le serveur et de nous concentrer uniquement sur le code. #🎜🎜##🎜🎜#Conclusion#🎜🎜##🎜🎜#Dans cet article, nous avons présenté comment empaqueter et publier des applications Node.js dans différents environnements cibles. Cela inclut les services sans serveur regroupés dans des packages NPM, des conteneurs Docker, des exécutables et des plates-formes cloud. La méthode d'emballage finale choisie doit dépendre des besoins et des exigences du projet. Après avoir choisi la méthode de conversion la mieux adaptée à votre application, vous pouvez être sûr que votre code s'exécutera. #🎜🎜##🎜🎜# (Le code et les exemples mentionnés dans cet article peuvent être trouvés dans le [dépôt de code GitHub](https://github.com/Judith-liu-phy/nodejs-packaging-examples). ) #🎜🎜#

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:Paramètres du chemin nodejsArticle suivant:Paramètres du chemin nodejs