Angularの単一プロジェクトを複数プロジェクトにアップグレードするプロセス全体

Angularの単一プロジェクトを複数プロジェクトにアップグレードするプロセス全体

序文

開発プロセス中に、1 つの Angular プロジェクトでは不十分であり、2 つの独立したプロジェクトを再利用するのは簡単ではないことに気付くことがあります。たとえば、現在 WeChat アプレットで実行される新しい H5 プロジェクトが必要ですが、元の WEB プロジェクトの entity、Share、Serivce、MockApi などのモジュールを新しい H5 プロジェクトに適用したいと考えています。この時点では、元の Angular プロジェクトをアップグレードするだけです。

シーン:

  1. 現在、ブラウザ上で Web プロジェクトが実行されています。
  2. 現在のプロジェクトに基づいて新しい WeChat プロジェクトを追加します。
  3. Webプロジェクトから公開されているものを抽出して、公開ライブラリを作成します。
  4. 元のWebプロジェクトと新しいWeChatプロジェクトの両方で、パブリックライブラリを呼び出すことができます

開発環境

この記事の開発環境は以下の通りです。

panjie@panjies-iMac ウェブ % ng --version

     _ _ ____ _ ___
    / \ _ __ __ _ _ _| | __ _ _ __ / ___| | |_ _|
   / △ \ | '_ \ / _` | | | | |/ _` | '__| | | | | | |
  / ___ \| | | | (_| | |_| | | (_| | | | |___| |___ | |
 /// \_\_| |_|\__、|\__、_|_|\__、_|_| \____|_____|___|
                |___/
    

Angular CLI: 12.1.4
ノード: 14.16.0
パッケージマネージャー: npm 6.14.11
OS: ダーウィンx64

角度: 12.1.5
... アニメーション、共通、コンパイラ、コンパイラ CLI、コア、フォーム
... プラットフォーム ブラウザ、プラットフォーム ブラウザ ダイナミック、ルーター

パッケージバージョン
---------------------------------------------------------
@angular-devkit/アーキテクト 0.1201.4
@angular-devkit/ビルド-angular 12.1.4
@angular-devkit/コア 12.1.4
@angular-devkit/schematics 12.1.4
@angular/cli 12.1.4
@schematics/角度 12.1.4
rxjs 6.6.7
タイプスクリプト 4.3.5

新しいプロジェクトを作成する

元の Web プロジェクトのルート フォルダーに入り、ng generate application wechat を実行します。

panjie@panjies-iMac web % ng アプリケーション wechat を生成
Angularルーティングを追加しますか? はい

ルーティングと CSS スタイル カテゴリを使用するかどうかを選択すると、Angular CLI によってプロジェクト フォルダーが生成されます。

プロジェクト
└── 微信
├── karma.conf.js
├── 出典
│ ├── アプリ
│ │ ├── app-routing.module.ts
│ │ ├── app.component.html
│ │ ├── app.component.scss
│ │ ├── app.component.spec.ts
│ │ ├── app.component.ts
│ │ └── app.module.ts
│ ├── 資産
│ ├── 環境
│ │ ├── environment.prod.ts
│ │ └── 環境.ts
│ ├── favicon.ico
│ ├──index.html
│ ├── main.ts
│ ├── ポリフィル.ts
│ ├──styles.scss
│ └── test.ts
├── tsconfig.app.json
└── tsconfig.spec.json

5 つのディレクトリ、17 個のファイル

同時に、angular.json ファイルが更新され、新しい wechat プロジェクトの構成情報が書き込まれました。

この時点で、ng s wechat を使用して wechat プロジェクトを開始し、ng t wechat を使用して wechat プロジェクトをテストし、ng build wechat を使用して wechat プロジェクトをビルドできます。

WeChat プロジェクトが利用可能になると、現在次のディレクトリ ツリーが存在します。

panjie@panjies-iMac ウェブ % ツリー -L 1 -a

├── .browserslistrc ②
├── .editorconfig ①
├── .eslintrc.json ②
├── README.md ①
├── angular.json ①
├── ディス ①
├── karma.conf.js ②
├── ノードモジュール ①
├── package-lock.json ①
├── package.json ①
├── プロジェクト①
├── 出典 ②
├── tsconfig.app.json ②
├── tsconfig.json ②
└── tsconfig.spec.json ②

① Angularプロジェクトファイル(WebプロジェクトとWeChatプロジェクトの両方に有効)

②Webプロジェクト専用ファイル

モバイルウェブプロジェクト

統一性を高めるために、②でマークされたファイルはすべてプロジェクトフォルダに移動します。 web という名前の新しいフォルダーを作成します。

プロジェクトが移動された後、それに応じてプロジェクトの構成情報を変更します。

角度付きJSON

このファイルには、Angular プロジェクトの構成情報が保存されます。構成が正しくないと、ng s などのコマンドが正常に起動しなくなります。
以下のように修正しました。

{
  「プロジェクト」: {
    「ウェブ」:{
- "根": ""、 
+ "ルート": "プロジェクト/ウェブ",
- "tsConfig": "tsconfig.app.json",
+ "tsConfig": "プロジェクト/web/tsconfig.app.json",
- "tsConfig": "tsconfig.spec.json",
+ "tsConfig": "プロジェクト/web/tsconfig.spec.json",
- "karmaConfig": "karma.conf.js",
+ "karmaConfig": "プロジェクト/web/karma.conf.js",

次に、グローバル置換を使用して「src」を「projects/web/src」に置き換えます。

変更が完了したら、 ng s web または ng t を実行して、他の構文エラー (主に移行プロセス中に発生する可能性のある参照エラー) がないか確認します。エラーがある場合は、プロンプトに従って修正します。

この時点で、履歴プロジェクトの移行は完了です。

パブリックモジュール

次に、プロジェクト内に新しい共通フォルダーを作成し、すべての共通エンティティ、サービス、コンポーネントなどをそこに移動します。これらの小さな機能モジュールは、Web プロジェクトでも WeChat でも使用できるため、同じホイールを 1 つ構築するだけで済みます。

要約する

Angular の単一プロジェクトを複数のプロジェクトにアップグレードする方法に関するこの記事はこれで終わりです。Angular の単一プロジェクトを複数のプロジェクトにアップグレードする方法に関するより関連性の高いコンテンツについては、123WORDPRESS.COM で以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後も 123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Angular プロジェクトを Angular6 に段階的にアップグレードする方法

<<:  中国における中国語ドメイン名の人気は新たなクライマックスを迎えた

>>:  高度な CSS の 3 つの方法を使用して複数行の省略を実装するサンプル コード

推薦する

VC6.0をWIN10にインストールすると使用できない問題の解決方法

VC6.0は確かに古すぎるVC6.0は昔の開発ツールです。現在のwin10では対応していません。しか...

Linux usermod コマンドの使用

1. コマンドの紹介usermod (ユーザー変更) コマンドは、ユーザー アカウントを変更するため...

MySQL データベース内の数十億のデータを素早くクリーンアップする方法

今日、ディスクアラーム例外を受け取りました。50G ディスクが爆発しました。分析と解決のプロセスは次...

JavaScript が Taobao の虫眼鏡効果を模倣

この記事では、淘宝虫眼鏡効果を実現するためのJavaScriptの具体的なコードを参考までに紹介しま...

MySQLは既存のコンテンツを保持し、後でコンテンツを追加します

このコマンドは、データ テーブル ff_vod を変更し、vod_url フィールドの内容の後に 9...

クリックして認証コードと認証を切り替えるJavaScript

この記事では、クリックして切り替える認証コードと認証を実装するためのJavaScriptの具体的なコ...

nginx + セカンダリドメイン名 + https サポートを使用する

ステップ1: Alibaba Cloudプライマリドメイン名にセカンダリドメイン名を追加する2 番目...

CSS flex 複数列レイアウト

基本的な3列レイアウト 。容器{ ディスプレイ: フレックス; 幅: 500ピクセル; 高さ: 20...

MySQL インデックス カバレッジの例の分析

この記事では、MySQL インデックス カバレッジについて例を挙げて説明します。ご参考までに、詳細は...

完全なショッピングカートを実装するためのミニプログラム

ミニプログラムは、参考までに完全なショッピングカート[すべて選択/選択解除して金額を計算/加算と減算...

Vueはグラフィック検証コードを実装する

この記事の例では、グラフィック検証コードを実装するためのVueの具体的なコードを参考までに共有してい...

Linux 環境変数とプロセス アドレス空間の概要

目次Linux 環境変数とプロセスアドレス空間コードを通じて環境変数を取得するプロセスアドレス空間な...

時間のかかるMySQLレコードのSQL例の詳細な説明

mysqlは時間のかかるSQLを記録しますMySQL は、最適化と分析のために、時間のかかる SQL...

HTML コード内のスペースと空白行についての簡単な説明

HTML コード内の連続するスペースまたは空白行 (改行) はすべて 1 つのスペースとして表示され...

ネイティブ JavaScript 継承方法とその長所と短所の詳細な説明

目次序文プロトタイプ継承アドバンテージ欠点コンストラクタの継承アドバンテージ欠点組み合わせ継承寄生的...