Table des matières
1. Créer une application Node.js de base
2. 打包和发布 Node.js 应用的方式
2.1. 打包成 NPM 包
rrreee
Maison interface Web Questions et réponses frontales Comment empaqueter et publier nodejs

Comment empaqueter et publier nodejs

May 14, 2023 am 09:36 AM

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}/`);
});
Copier après la connexion
// package.json

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

这是一个非常基本的 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
Copier après la connexion

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

# 打包成 .tgz 文件
npm pack
Copier après la connexion

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

# 登录进入 NPM 账户
npm login

# 发布 NPM 包
npm publish
Copier après la connexion
# 使用 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" ]
Copier après la connexion

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
Copier après la connexion

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
Copier après la connexion

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
Copier après la connexion
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 de ce site Web
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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Commandes de chat et comment les utiliser
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Qu'est-ce que l'utilisation Effecte? Comment l'utilisez-vous pour effectuer des effets secondaires? Qu'est-ce que l'utilisation Effecte? Comment l'utilisez-vous pour effectuer des effets secondaires? Mar 19, 2025 pm 03:58 PM

L'article traite de l'utilisation Effecte dans React, un crochet pour gérer les effets secondaires comme la récupération des données et la manipulation DOM dans les composants fonctionnels. Il explique l'utilisation, les effets secondaires courants et le nettoyage pour éviter des problèmes comme les fuites de mémoire.

Comment fonctionne l'algorithme de réconciliation React? Comment fonctionne l'algorithme de réconciliation React? Mar 18, 2025 pm 01:58 PM

L'article explique l'algorithme de réconciliation de React, qui met à jour efficacement le DOM en comparant les arbres DOM virtuels. Il traite des avantages de la performance, des techniques d'optimisation et des impacts sur l'expérience utilisateur. Compte de charge: 159

Quelles sont les fonctions d'ordre supérieur en JavaScript, et comment peuvent-ils être utilisés pour écrire du code plus concis et réutilisable? Quelles sont les fonctions d'ordre supérieur en JavaScript, et comment peuvent-ils être utilisés pour écrire du code plus concis et réutilisable? Mar 18, 2025 pm 01:44 PM

Les fonctions d'ordre supérieur dans JavaScript améliorent la concision du code, la réutilisabilité, la modularité et les performances par abstraction, modèles communs et techniques d'optimisation.

Comment fonctionne le currying en JavaScript et quels sont ses avantages? Comment fonctionne le currying en JavaScript et quels sont ses avantages? Mar 18, 2025 pm 01:45 PM

L'article traite du curry dans JavaScript, une technique transformant les fonctions mulguments en séquences de fonctions à argument unique. Il explore la mise en œuvre du currying, des avantages tels que des applications partielles et des utilisations pratiques, améliorant le code

Qu'est-ce que UseContext? Comment l'utilisez-vous pour partager l'état entre les composants? Qu'est-ce que UseContext? Comment l'utilisez-vous pour partager l'état entre les composants? Mar 19, 2025 pm 03:59 PM

L'article explique UseContext dans React, qui simplifie la gestion de l'État en évitant le forage des accessoires. Il traite des avantages tels que les améliorations centralisées de l'État et des performances grâce à des redevances réduites.

Comment connectez-vous les composants React au magasin Redux à l'aide de Connect ()? Comment connectez-vous les composants React au magasin Redux à l'aide de Connect ()? Mar 21, 2025 pm 06:23 PM

L'article discute de la connexion des composants React à Redux Store à l'aide de Connect (), expliquant MapStateToproprop, MapDispatchToprops et des impacts de performances.

Comment empêchez-vous le comportement par défaut dans les gestionnaires d'événements? Comment empêchez-vous le comportement par défaut dans les gestionnaires d'événements? Mar 19, 2025 pm 04:10 PM

L'article discute de la prévention des comportements par défaut dans les gestionnaires d'événements à l'aide de la méthode empêchée dedEfault (), de ses avantages tels que une expérience utilisateur améliorée et des problèmes potentiels tels que les problèmes d'accessibilité.

Quels sont les avantages et les inconvénients des composants contrôlés et incontrôlés? Quels sont les avantages et les inconvénients des composants contrôlés et incontrôlés? Mar 19, 2025 pm 04:16 PM

L'article traite des avantages et des inconvénients des composants contrôlés et incontrôlés dans la réaction, en se concentrant sur des aspects tels que la prévisibilité, la performance et les cas d'utilisation. Il conseille les facteurs à considérer lors du choix entre eux.

See all articles