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 つの方法を使用して複数行の省略を実装するサンプル コード

推薦する

フロントエンド開発者のための HTML 入門

1 HTML入門1.1 初めてのコード体験、最初のウェブページの作成XML/HTML コードコンテン...

JavaScript フレームワーク デザイン パターンの詳細な説明

目次動画最優秀選手ムヴヴムVueのソーススパ mpa要素を作成するクラス要約する動画 Model(模...

JSはGMTとUTCのタイムゾーンを完全に理解しています

目次序文1. GMT GMTとはGMTの歴史2. UTC UTCとはUTC は次の 2 つの部分で構...

DOCTYPE 文書型宣言 (Web ページ愛好家必読)

DOCTYPE 宣言 作成するすべてのページの先頭に、ドキュメント宣言が必要です。はい、そうでしょう...

vscode で console.log を書く 2 つの簡単な方法の詳細な説明

(I) 方法 1: 事前にスクリプト タグ内に直接定義します。この HTML ファイルにのみ適用され...

HTML テーブル マークアップ チュートリアル (41): テーブル ヘッダーの幅と高さの属性 WIDTH、HEIGHT

デフォルトでは、ヘッダーの幅と高さはコンテンツに応じて自動的に調整されます。ヘッダーの幅と高さを手動...

CSS でマウスの位置をマッピングし、マウスを動かしてページ要素を制御する (サンプル コード)

マウスの位置をマッピングしたり、ドラッグ効果を実装したりすることは、 JavaScriptで行うこと...

dig/nslookup コマンドを使用して DNS 解決手順を表示する方法

dig - DNS ルックアップ ユーティリティドメイン名のアクセス障害が発生した場合、ドメイン名の...

MySQLのエンコードの不一致によって発生する可能性のある問題

ストアドプロシージャとコーディングMySQL ストアド プロシージャでは、テーブルとデータのエンコー...

JTAを実装するためにAtomikosと組み合わせたTomcatについて

最近、プロジェクトは環境を切り替え、WebLogic を Tomcat に置き換えました。途中で発生...

ベースリンクタグの使用の紹介ベース

<br />リンクをクリックすると、ポップアップ表示される Web ページ アドレスは ...

HTMLのインライン要素とブロックレベル要素とは何か、またそれらの違いは何ですか

以前の就職面接で面接官が尋ねた質問を覚えています。「インライン要素とは何ですか。ブロックレベル要素と...

Faint: 「Web2.0 を使用して標準に準拠したページを作成する」

今日、ある人がウェブサイト開発プロジェクトについて話をしてくれました。具体的な要件について話すと、「...

Vue3.0 手書きカルーセル効果

この記事では、Vue3.0の手書きカルーセル効果の具体的なコードを参考までに共有します。具体的な内容...

Linux で推奨される 9 つの優れたコード比較ツールの概要

コードを書くとき、2 つのファイル間の違い、または同じファイルの異なるバージョン間の違いを知る必要が...