ホームページ ウェブフロントエンド jsチュートリアル Webpack を使用して koa2 フレームワーク アプリをパッケージ化するにはどうすればよいですか?

Webpack を使用して koa2 フレームワーク アプリをパッケージ化するにはどうすればよいですか?

Jun 08, 2018 pm 01:56 PM
koa2 webpack パッケージの展開 展開する

この記事では、webpack を使用して koa2 フレームワークをパッケージ化する手順と最終的なデプロイメントを紹介します。これは非常に実用的で、必要な友人は参照できます。

私が以前に koa を使用してサーバーを作成したとき、公開は簡単でした。悪夢。 src 内のすべてのファイルを上書きする必要があり、config 構成ファイルも上書きする必要があります。注意しないと、さまざまな問題がオンラインで報告され、公開する前にローカルでロールバックして調整する必要があります。 webpack を使用して koa アプリをパッケージ化する方法についての記事を偶然目にしました。webpack でバックエンドもパッケージ化できることがわかりました。こんなことは今まで考えたこともありませんでした。

重要な問題

1: node_modules 内のすべてのモジュールがパッケージ化されていない

webpack の中心的な機能は、参照される各モジュールをファイルに入力し、さまざまな標準化されたモジュールを統合することです モジュラー処理 (webpack 仕様)。

しかし、ノードには多数の fs と path の操作が含まれており、パッケージ化が完了するとこれらの fs と path の操作には操作オブジェクトがなくなり、さまざまなエラーが報告されます。

したがって、パッケージ化に webpack を使用することの核心は、node_modules 内のすべてのモジュールをパッケージ化することを拒否し、相対パスによって参照されるファイルのみを 1 つのファイルにパッケージ化することです。たまたま、webapck にはパッケージ化する必要のないモジュールを除外する externals 属性が用意されていることがわかりました。

さらに詳しく見てみると、webpack、nodemon、babel-preset-env などのモジュールはアプリ開発環境が依存するパッケージであり、私たちのプログラムはこれらのモジュールをまったく必要としないことがわかります。

要約すると、必要なパッケージをすべて除外するだけで済みます。このモジュールは、package.json の依存関係にあるモジュールに対応します。依存関係と devDependency の違いを理解することが重要です。

そのため、externals-dependency プラグインを使用して externals 属性を操作し、依存関係を除外することができます。

コード:

const webpack = require('webpack');
const _externals = require('externals-dependencies')
module.exports = {
  ...
  externals: _externals(),
  ...
}
ログイン後にコピー

2: ターゲットはノードを指します

公式ドキュメント: Node.js のような環境にコンパイルされています (チャンクをロードするには Node.js require を使用します)

コード:

target: 'node',
ログイン後にコピー

3:ノード構成の追加

公式ドキュメント: これらのオプションでは、特定の Node.js グローバル変数とモジュールをポリフィルするかモックするかを構成できます。これにより、もともと Node.js 環境用に記述されたコードをブラウザなどの他の環境で実行できるようになります。

コード:

node: {
    console: true,
    global: true,
    process: true,
    Buffer: true,
    __filename: true,
    __dirname: true,
    setImmediate: true,
    path: true
},
ログイン後にコピー

4: babel設定

ノードの下位バージョンがネイティブにasync/awaitをサポートしていないという問題と互換性を持たせるため。ここでは、babel の babel-preset-env{"modules": false} 設定を使用します。この設定は、let と const から var など、es6 構文を es5 構文に変換します。

同時に、すべての async/await 関数も、ポリフィルで定義された _asyncToGenerator 関数に変換されます。

実際、Promise は非同期関数の機能を実装するために使用されます。

もちろん、この関数も実行時に regeneratorRuntime 関数が必要です。そこで、regeneratorRuntime 関数を提供するために babel-polyfill をグローバルに導入しました。

注: ノードのバージョンが非常に高く、async/await をネイティブにサポートしている場合は、babel-preset-env と babel-polyfill を省略できます

コード:

const path = require('path');
const webpack = require('webpack');
const _externals = require('externals-dependencies')

module.exports = {
  entry: {
    app: [
      // 如果polyfill放在这里,打包的时候将不会被external,必须在js里require才能有效external
      // 'babel-polyfill',
      './src/index.js'
    ]
  },
  output: {
    path: path.resolve(__dirname),
    filename: '[name].js'
  },
  resolve: {
    extensions: [".js"]
  },
  target: 'node',
  externals: _externals(),
  context: __dirname,
  node: {
    console: true,
    global: true,
    process: true,
    Buffer: true,
    __filename: true,
    __dirname: true,
    setImmediate: true,
    path: true
  },
  module: {
    rules: [
      {
        test: /\.js/,
        use: ['babel-loader']
      }
    ]
  },
  plugins: [
    new webpack.DefinePlugin({
      'process.env': {
        NODE_ENV: '"development"'
      }
    }),
  ]
}
ログイン後にコピー

Deployment

パッケージ化後、デプロイ時にpackage.json、app.js、および html をオンラインでデプロイするだけで済み、より便利です。次に、サーバー上で

1. npm install
2. npm run for

を実行すると、サーバーがバックグラウンドで実行されます。更新して公開する必要がある場合は、npm run dev または npm run build をローカルで再パッケージし、サーバーにドラッグして app.js を上書きするだけです。

上記は私があなたのためにまとめたものです。

関連記事:

Reactを使ったコンポーネントライブラリの開発方法

fullpage.jsを使ってスクロールを実装する

npmを使ったElectronのインストールが失敗する問題

以上がWebpack を使用して koa2 フレームワーク アプリをパッケージ化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Jenkins Pipeline を使用して、PHP プログラムの継続的なパッケージ化とデプロイメントのプロセスを構築するにはどうすればよいですか? Jenkins Pipeline を使用して、PHP プログラムの継続的なパッケージ化とデプロイメントのプロセスを構築するにはどうすればよいですか? Jul 30, 2023 pm 07:41 PM

JenkinsPipeline を使用して PHP プログラムの継続的なパッケージ化とデプロイメントのプロセスを構築するにはどうすればよいですか? Jenkins は非常に人気のある継続的統合およびデプロイメント ツールであり、ビルドとデプロイメントのプロセスをシンプルかつ効率的に行うための豊富なプラグインと機能を提供します。 JenkinsPipeline は Jenkins の最新プラグインであり、これを使用すると、完全で拡張可能な DSL (DomainSpecificLanguage) を使用して継続的な統合とデプロイメントを定義できます。

信頼できる Web インターフェイスを Linux サーバーに展開するにはどうすればよいですか? 信頼できる Web インターフェイスを Linux サーバーに展開するにはどうすればよいですか? Sep 09, 2023 pm 03:27 PM

信頼できる Web インターフェイスを Linux サーバーに展開するにはどうすればよいですか?はじめに: 今日の情報爆発の時代において、Web アプリケーションは人々が情報を取得し、通信するための主要な方法の 1 つになりました。ユーザーのプライバシーと情報の信頼性を確保するには、信頼できる Web インターフェイスを Linux サーバーに展開する必要があります。この記事では、Linux 環境に Web インターフェイスを展開する方法を紹介し、関連するコード例を示します。 1. Linux サーバーをインストールして構成します。まず、Linux サーバーを準備する必要があります。

FastAPI で Docker コンテナ化を使用してアプリケーションをデプロイする方法 FastAPI で Docker コンテナ化を使用してアプリケーションをデプロイする方法 Jul 28, 2023 pm 01:25 PM

Docker コンテナ化を使用して FastAPI でアプリケーションをデプロイする方法 はじめに: Docker は、アプリケーションとその依存関係を独立したポータブルなコンテナにパッケージ化し、迅速なデプロイと拡張を実現するコンテナ化テクノロジです。 FastAPI は、Python をベースとした最新の高性能 Web フレームワークで、シンプルで高速な API 開発エクスペリエンスを提供します。この記事では、Docker コンテナ化を使用して FastAPI にアプリケーションをデプロイする方法を紹介し、対応するコード例を示します。

Tomcat が war パッケージをデプロイした後にアクセスできない問題を解決する方法 Tomcat が war パッケージをデプロイした後にアクセスできない問題を解決する方法 Jan 13, 2024 pm 12:07 PM

Tomcat がデプロイ後に war パッケージに正常にアクセスできない問題を解決するには、特定のコード サンプルが必要です。広く使用されている Java Web サーバーとして、Tomcat を使用すると、開発者は独自に開発した Web アプリケーションをデプロイ用の war ファイルにパッケージ化できます。ただし、構成が正しくないことやその他の理由により、war パッケージをデプロイした後に正常にアクセスできないという問題が発生する場合があります。この記事では、このジレンマに対処する具体的なコード例をいくつか紹介します。 1. Tomcat サービスを確認する

Docker を使用して PHP プログラムをパッケージ化してデプロイするにはどうすればよいですか? Docker を使用して PHP プログラムをパッケージ化してデプロイするにはどうすればよいですか? Jul 29, 2023 pm 05:48 PM

Docker を使用して PHP プログラムをパッケージ化してデプロイするにはどうすればよいですか?クラウド コンピューティングとコンテナ化テクノロジの普及に伴い、アプリケーションのパッケージ化とデプロイに Docker を使用する開発者がますます増えています。この記事では、Docker を使用して PHP プログラムをパッケージ化してデプロイする方法を紹介し、関連するコード例を示します。 1. Docker をインストールする 開始する前に、まず Docker をインストールする必要があります。インストール手順については、Docker 公式ドキュメントを参照し、さまざまなオペレーティング システムに応じて対応するインストール方法を選択してください。

Yolov10: 詳細な説明、展開、アプリケーションがすべて 1 か所にまとめられています。 Yolov10: 詳細な説明、展開、アプリケーションがすべて 1 か所にまとめられています。 Jun 07, 2024 pm 12:05 PM

1. はじめに ここ数年、YOLO は、計算コストと検出パフォーマンスの効果的なバランスにより、リアルタイム物体検出の分野で主流のパラダイムとなっています。研究者たちは、YOLO のアーキテクチャ設計、最適化目標、データ拡張戦略などを調査し、大きな進歩を遂げました。同時に、後処理に非最大抑制 (NMS) に依存すると、YOLO のエンドツーエンドの展開が妨げられ、推論レイテンシに悪影響を及ぼします。 YOLO では、さまざまなコンポーネントの設計に包括的かつ徹底的な検査が欠けており、その結果、大幅な計算冗長性が生じ、モデルの機能が制限されます。効率は最適ではありませんが、パフォーマンス向上の可能性は比較的大きくなります。この作業の目標は、後処理とモデル アーキテクチャの両方から YOLO のパフォーマンス効率の境界をさらに改善することです。この目的を達成するために

Flask アプリケーションのための Gunicorn 導入ガイド Flask アプリケーションのための Gunicorn 導入ガイド Jan 17, 2024 am 08:13 AM

Gunicorn を使用して Flask アプリケーションをデプロイするにはどうすればよいですか? Flask は、さまざまなタイプの Web アプリケーションの開発に広く使用されている軽量の Python Web フレームワークです。 Gunicorn (GreenUnicorn) は、WSGI (WebServerGatewayInterface) アプリケーションの実行に使用される Python ベースの HTTP サーバーです。この記事では、Gunicorn を使用して Flask アプリケーションをデプロイする方法を紹介します。

Tomcat に Web プロジェクトをデプロイするためのベスト プラクティスと一般的な問題の解決策 Tomcat に Web プロジェクトをデプロイするためのベスト プラクティスと一般的な問題の解決策 Dec 29, 2023 am 08:21 AM

Tomcat を使用して Web プロジェクトをデプロイするためのベスト プラクティスと一般的な問題の解決策 はじめに: Tomcat は、軽量の Java アプリケーション サーバーとして、Web アプリケーション開発で広く使用されています。この記事では、Web プロジェクトの Tomcat 展開のベスト プラクティスと一般的な問題解決方法を紹介し、読者がよりよく理解して適用できるように具体的なコード例を示します。 1. プロジェクトのディレクトリ構造の計画 Web プロジェクトをデプロイする前に、プロジェクトのディレクトリ構造を計画する必要があります。大まかに言うと、次のように整理できます

See all articles