Heim >Web-Frontend >Front-End-Fragen und Antworten >So verpacken und veröffentlichen Sie NodeJS

So verpacken und veröffentlichen Sie NodeJS

王林
王林Original
2023-05-14 09:36:374940Durchsuche

Node.js ist eine sehr beliebte Entwicklungsplattform und genießt bei Entwicklern ein hohes Ansehen. Bei der Entwicklung einer Node.js-Anwendung müssen wir darüber nachdenken, sie in eine Form zu packen, die in anderen Umgebungen verwendet werden kann. In diesem Artikel wird erläutert, wie Sie Node.js-Anwendungen in verschiedenen Umgebungen packen und veröffentlichen.

1. Erstellen Sie eine grundlegende Node.js-Anwendung.

Bevor wir mit dem Packen und Veröffentlichen der Node.js-Anwendung beginnen, müssen wir eine grundlegende Node.js-Anwendung erstellen. Eine sehr einfache Methode wird hier nur zu Bildungszwecken bereitgestellt. Wir beginnen mit der Erstellung einer einfachen Verzeichnisstruktur und fügen dann zwei Dateien zum Projekt hinzu. Die erste Datei ist server.js, die zum Erstellen eines HTTP-Servers verwendet wird. Die zweite Datei ist package.json, die die Metadateninformationen und Abhängigkeiten unserer Anwendung angibt. 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" ]

Dies ist eine sehr einfache Node.js-Anwendung, die lediglich das HTTP-Modul verwendet, um einen Server zu erstellen und „Hello, World!“ zurückzugeben, und außerdem die Express-Bibliothek zur einfacheren Verarbeitung von HTTP-Anfragen verwendet.

2. So verpacken und veröffentlichen Sie Node.js-Anwendungen

Um Node.js-Anwendungen zu verpacken und zu veröffentlichen, müssen wir die Zielumgebung und -nutzung berücksichtigen. Hier sind einige gängige Methoden zum Packen und Veröffentlichen von Node.js-Anwendungen.

2.1. Packen in NPM-Pakete

Seit seiner Einführung war NPM der primäre Paketmanager für Node.js-Anwendungen. Verwenden Sie den Befehl npm init, um eine Basisdatei „package.json“ zu erstellen und die Abhängigkeiten unserer Anwendung anzugeben. Bei der Installation von NPM-Paketen in einem Projekt können wir anhand von Produktions- oder Entwicklungsabhängigkeiten unterscheiden. Beim Packen einer Python-Bibliothek können Sie ähnliche Abhängigkeiten verwenden, um die erforderlichen Bibliotheken von Drittanbietern anzugeben.

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

Führen Sie dann den Befehl npm pack aus und wir erhalten eine Paketdatei .tgz, die unseren Code und andere notwendige Dateien enthält.

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

Die Datei .tgz kann direkt in anderen Projekten installiert und verwendet werden oder für andere Entwickler in die [NPM-Registrierung] (https://www.npmjs.com/) hochgeladen werden Herunterladen und verwenden. Um ein NPM-Paket zu veröffentlichen, müssen Sie ein Konto in der [NPM-Registrierung](https://www.npmjs.com/) erstellen und sich mit dem Befehl npm login anmelden.

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

2.2. Packen in Docker-Container

Docker kann Node.js-Anwendungen in Container packen, um die Konsistenz beim Ausführen der Anwendung in verschiedenen Umgebungen sicherzustellen. Indem Sie Ihre Anwendung in einen Docker-Container packen, können Sie sie überall dort ausführen, wo Docker unterstützt wird, ohne sich Gedanken über Abhängigkeiten oder veraltete Laufzeitumgebungen machen zu müssen.

Um einen Docker-Container zu generieren, müssen wir eine Docker-Datei schreiben, die die Abhängigkeiten und die Installation der Anwendung angibt.

rrreee

Führen Sie den folgenden Befehl in dem Verzeichnis aus, in dem die Dockerfile-Datei vorhanden ist, um einen Docker-Container zu generieren.

rrreee

Mit dem obigen Befehl haben wir die Node.js-Anwendung erfolgreich in ein Docker-Image gepackt und erfolgreich im Container ausgeführt.

2.3. Packen in eine ausführbare Serverdatei

Mit dem [pkg](https://github.com/vercel/pkg)-Tool können wir die Node.js-Anwendung in eine ausführbare Datei packen. Dieses Tool ermöglicht die Ausführung unserer Anwendung ohne die Installation von Node.js oder NPM und die Verwaltung von Abhängigkeiten ist sehr einfach.

Verwenden Sie zunächst npm, um das PKG-Tool zu installieren.

rrreee

Führen Sie dann den folgenden Befehl im Terminal aus, um die ausführbare Datei zu packen und zu generieren.

rrreee

2.4. Packen in serverlose Dienste für Cloud-Plattformen

Auf Cloud-Plattformen besteht die beste Möglichkeit, Node.js-Anwendungen zu packen, darin, serverlose Dienste zu erstellen. Dieser Ansatz vermeidet den Aufwand der Infrastruktur- und Netzwerkverwaltung und ermöglicht bei Bedarf eine adaptive Skalierung. 🎜🎜Mit dem AWS Lambda-Service können Sie beispielsweise Node.js-Anwendungen verpacken und veröffentlichen, ohne selbst virtuelle Maschinen oder Server verwalten zu müssen. Erstellen Sie einfach eine Lambda-Funktion und laden Sie den Funktionscode auf AWS Lambda hoch. 🎜🎜Zuerst müssen wir eine Funktion in AWS Lambda erstellen und unsere Node.js-Anwendung hochladen. Wählen Sie beim Erstellen der Funktion Node.js als Laufzeitumgebung aus und verpacken Sie dann unseren Code als ZIP-Datei zum Hochladen. 🎜🎜Wenn die Lambda-Funktion aufgerufen wird, wird die lokale Computerumgebung gestartet und der Code zur Ausführung in die Umgebung geladen. Daher müssen wir den Server nicht manuell verwalten und uns nur auf den Code konzentrieren. 🎜🎜Fazit🎜🎜In diesem Artikel haben wir vorgestellt, wie man Node.js-Anwendungen verpackt und in verschiedenen Zielumgebungen veröffentlicht. Dazu gehören serverlose Dienste, die in NPM-Paketen, Docker-Containern, ausführbaren Dateien und Cloud-Plattformen verpackt sind. Die letztendlich gewählte Verpackungsmethode sollte von den Bedürfnissen und Anforderungen des Projekts abhängen. Nachdem Sie die für Ihre Anwendung am besten geeignete Konvertierungsmethode ausgewählt haben, können Sie sicher sein, dass Ihr Code ausgeführt wird. 🎜🎜 (Der in diesem Artikel erwähnte Code und die Beispiele finden Sie im [GitHub-Repository](https://github.com/Judith-liu-phy/nodejs-packaging-examples).) 🎜

Das obige ist der detaillierte Inhalt vonSo verpacken und veröffentlichen Sie NodeJS. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:nodejs-PfadeinstellungenNächster Artikel:nodejs-Pfadeinstellungen