webpackを使用してTypeScriptコードをパッケージ化およびコンパイルする方法を教えます

webpackを使用してTypeScriptコードをパッケージ化およびコンパイルする方法を教えます

TypeScript バンドル

webpack 統合

通常、実際の開発では、ビルド ツールを使用してコードをパッケージ化する必要があります。

TS はビルドツールと組み合わせて使用​​することもできます。以下では、webpack を例に、TS をビルドツールと組み合わせて使用​​する方法を紹介します。

手順は次のとおりです。

プロジェクトを初期化する

プロジェクトのルートディレクトリに入り、 npm init -yコマンドを実行してpackage.jsonファイルを作成します。

ビルドツールをダウンロードする

コマンドは次のとおりです。

npm i -D webpack webpack-cli webpack-dev-server typescript ts-loader clean-webpack-plugin

合計 7 つのパッケージがインストールされました:

  • webpack: ビルドツール webpack
  • webpack-cli: webpack のコマンドライン ツール
  • webpack-dev-server: webpack 開発サーバー
  • タイプスクリプト: ts-compiler
  • ts-loader: ts ローダー。webpack で ts ファイルをコンパイルするために使用されます。
  • html-webpack-plugin: webpack の html プラグイン。html ファイルを自動的に作成するために使用されます。
  • clean-webpack-plugin: 各ビルドの前にディレクトリをクリーンアップする webpack のクリーンアップ プラグイン

webpackを設定する

ルート ディレクトリに webpack 構成ファイルwebpack.config.jsを作成します。

定数パス = require("パス");
const HtmlWebpackPlugin = require("html-webpack-plugin");
const { CleanWebpackPlugin } = require("clean-webpack-plugin");

モジュール.エクスポート = {
   最適化:
       最小化: false // コード圧縮をオフにする(オプション)},

   エントリ: "./src/index.ts",

   開発ツール: "インラインソースマップ",

   開発サーバー: {
       コンテンツベース: './dist'
   },

   出力: {
       パス: path.resolve(__dirname, "dist"),
       ファイル名: "bundle.js",
       環境:
           arrowFunction: false // webpack の矢印関数をオフにします (オプション)}
   },

   解決する: {
       拡張子: [".ts", ".js"]
   },

   モジュール: {
       ルール:
           {
               テスト: /\.ts$/,
               使用: {
                   ローダー: "ts-loader"     
               },
               除外: /node_modules/
           }
       ]
   },

   プラグイン: [
       新しい CleanWebpackPlugin()、
       新しいHtmlWebpackプラグイン({
           タイトル:「TSテスト」
       })、
   ]
}

TSコンパイルオプションを設定する

ルートディレクトリにtsconfig.jsonを作成し、必要に応じて設定します。

{
   "コンパイラオプション": {
       "ターゲット": "ES2015",
       "モジュール": "ES2015",
       "厳密": 真
   }
}

package.json 構成を変更する

package.jsonを変更し、次の設定を追加します。

{
   ...
   「スクリプト」: {
       "test": "echo \"エラー: テストが指定されていません\" && exit 1",
       「ビルド」:「webpack」、
       "開始": "webpack サーブ --open chrome.exe"
   },
   ...
}

プロジェクトの使用

src の下に ts ファイルを作成し、コマンド ラインでnpm run build実行してコードをコンパイルします。

または、 npm startを実行して開発サーバーを起動します。

バベル

開発中にコードを変換するには、webpack に加えて babel が必要になることがよくあります。

より多くのブラウザと互換性を持たせるために、上記の手順に基づいて、以下の手順でプロジェクトに babel を導入します。

TS はコンパイル中のコード変換もサポートしていますが、サポートされるのは単純なコード変換のみです。

Promise などの ES6 機能の場合、TS を直接変換することはできないため、変換には babel が必要です。

依存パッケージをインストールします。

npm i -D @babel/core @babel/preset-env babel-loader core-js

合計 4 つのパッケージがインストールされました。

  • @babel/core: Babel のコアツール
  • @babel/preset-env: Babel の定義済み環境
  • @babel-loader: webpack の babel ローダー
  • core-js: core-jsは、古いブラウザが新しいES構文をサポートできるようにするために使用されます。

webpack.config.js 構成ファイルを変更する

モジュール: {
    ルール:
        {
            テスト: /\.ts$/,
            使用: [
                {
                    ローダー: "babel-loader",
                    オプション:{
                        プリセット: [
                            [
                                "@babel/プリセット環境",
                                {
                                    「ターゲット」:{
                                        "クローム": "58",
                                        "つまり": "11"
                                    },
                                    "corejs":"3",
                                    "useBuiltIns": "使用方法"
                                }
                            ]
                        ]
                    }
                },
                {
                    ローダー: "ts-loader",
                }
            ]、
            除外: /node_modules/
        }
    ]
}

このようにして、ts でコンパイルされたファイルは babel によって再度処理されます。

ほとんどのブラウザでコードを直接使用できるようにします。

ターゲットの構成オプションで互換性のあるブラウザのバージョンを指定することもできます。

これで、webpack を使用して TypeScript コードをパッケージ化およびコンパイルする方法についての説明は終わりです。webpack による TypeScript のパッケージ化とコンパイルに関するより関連性の高いコンテンツについては、123WORDPRESS.COM で以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Webアプリケーション開発におけるTypeScriptの使用の詳細な説明
  • ホットアップデートを実装するためのWebsocket4.0+Typescriptメソッド
  • React+TypeScript+webpack4 マルチエントリ構成の詳細説明
  • TypeScript でシンプルな Web アプリケーションを作成する

<<:  Zabbixのインストールと展開の詳細な説明

>>:  MySQL: データの整合性

推薦する

単一行関数と文字計算日付プロセス制御を説明する MySQL の例

目次1. キャラクター機能1. ケースコントロール機能2. キャラクターコントロール機能2. 数学関...

ファイアウォールの iptables 戦略を使用して Linux サーバー上のポートを転送する方法

2つの異なるサーバー間の転送ポート転送を有効にするまず、デフォルトでは無効になっている IP 転送機...

MySQL のソートとページング (order by と limit) と既存の落とし穴

並べ替えクエリ (order by)電子商取引の場合: 今日完了したすべての注文を表示し、取引金額に...

シンプルなページカウントダウンを実現するJavaScript

この記事では、参考までに、シンプルなページカウントダウンを実装するためのJavaScriptの具体的...

MYSQL の binlog 最適化に関する考察の要約

質問質問 1: トランザクションをコミットするときに REDO ログをフラッシュすることによって発生...

Echatsチャートの大画面適応を実装する方法

目次説明する成し遂げるプロジェクトのディレクトリ構造は次のとおりです。効果図は以下のとおりです要約す...

PC/Pad/Phoneデバイスに自動的に適応するCSSウェブページレスポンシブレイアウト

序文最近は、PC、iPad、携帯電話、スマートウォッチ、スマートテレビなど、さまざまなデバイスが存在...

面接官がmysqlのcharとvarcharの違いを尋ねたとき

目次charとvarcharの違いcharとvarcharの違い上記は、MySQL における cha...

NginxはGzipアルゴリズムを使用してメッセージを圧縮します

HTTP圧縮とは場合によっては、比較的大きなメッセージ データがクライアントとサーバー間で送信され、...

Vue.jsは音楽プレーヤーを実装します

この記事では、音楽プレーヤーを実装するためのVue.jsの具体的なコードを参考までに共有します。具体...

Docker で複数の MySQL コンテナを作成して実行する方法の例

1. mysql/mysql-server:latestイメージを使用してMySQLインスタンスを素...

Vue.jsはタイムライン機能を実装します

この記事では、タイムライン機能を実装するためのVue.jsの具体的なコードを参考までに共有します。具...

ホストがアクセスできるようにMySQLの権限を変更する方法

mysqlのリモートアクセス権を有効にするデフォルトでは、MySQL ユーザーにはリモート アクセス...

MySQLの3つの用途と違いは同等ではない

MySQLでは判定記号がよく使われますが、等しくない記号はもっと一般的に使われます。次の3つの等しく...