パッケージの前面レルナベスト・管理の実践

背景

保守パッケージのための選択に直面するだろうより多くの学生を持っていた:パッケージが倉庫で、または複数倉庫の整備に配置され、別途少ない回数を維持し、あまりにも複数の倉庫を維持する必要はありませんパッケージの数が徐々に増加したときに大きな問題は、しかし、徐々にいくつかの問題を暴露します:

  1. パッケージ間の相互依存関係、開発者は、ローカルに手動NPMリンク、保守交換用のバージョン番号を実行する必要があります。
  2. 問題は、それが別のレポ年中に分散されるため、管理、統一されたトラックに困難です。
  3. 各パッケージには、個別のnode_modulesが含まれていますが、それらのほとんどが含まれている時間は、冗長をインストールし、あまりにも多くのスペースを取るために消費し、WebPACKのような開発として、バベルに依存しています。

レルナは何ですか

それが何であるかを最終的にレルナ?レルナの公式ウェブサイトはそれを説明します

JavaScriptがために、プロジェクトのパッケージを管理するための複数のツールを持っています。
このプレゼンテーションでは、非常に明確であるレルナの導入後、マルチパッケージjavascriptのプロジェクト管理アプローチを提供するために、問題が上記より多くの開発者を解決するだけでなくすることができます。
まず、自動的にパッケージ間の依存関係を解決します。
第二には、gitのことで自動的に発行されたファイルの変更を検出します。
第三に、Gitリポジトリによると、レコード、自動的に生成されたCHANGELOGをコミット

共通コマンド

グローバル・インストールレルナ

レルナ私たちは、グローバルインストールレルナのツールが必要です。

$ npm i -g lerna
# 或
$ yarn global add lerna

インストールは、すべての項目に依存して、同様のNPM /糸I

$ lerna bootstrap

プロジェクトへの更新を送信

次の手順を実行するには、このコマンドを実行します。

  1. 公開する必要があるパッケージを判断するには、更新を実行しレルナ
  2. 必要であれば、それはバージョンを更新しますlerna.json
  3. バージョンフィールドの更新package.jsonのすべての更新パッケージ
  4. すべての更新パッケージがアップデートに依存します
  5. gitのは、新しいバージョンのコミットまたはタグを作成するには
  6. NPMを公開するパケット
$ lerna publish # 用于发布更新
$ lerna publish --skip-git # 不会创建git commit或tag
$ lerna publish --skip-npm # 不会把包publish到npm上

使用して、プロジェクトを初期化レルナ

$ lerna init # 固定模式(Fixed mode)默认为固定模式,packages下的所有包共用一个版本号(version)
$ lerna init --independent # 独立模式(Independent mode),每一个包有一个独立的版本号

パッケージは、パッケージの依存関係をインストールしたフォルダ

$ lerna add <package>[@version] [--dev] # 命令签名
# 例如
$ lerna add module-1 --scope=module-2 # 将 module-1 安装到 module-2
$ lerna add module-1 --scope=module-2 --dev # 将 module-1 安装到 module-2 的 devDependencies 下
$ lerna add module-1 # 将 module-1 安装到除 module-1 以外的所有模块
$ lerna add babel-core # 将 babel-core 安装到所有模块

アンインストール依存性

$ lerna exec -- <command> [..args] # 在所有包中运行该命令

# 例如
$ lerna exec --scope=npm-list  yarn remove listr # 将 npm-list 包下的 listr 卸载
$ lerna exec -- yarn remove listr # 将所有包下的 listr 卸载

変更のパッケージが発生したかどうかを確認し(Gitのコードが提出されていることを提供)

$ lerna updated
# 或
$ lerna diff
  • パッケージ名の下に、各ディスプレイパッケージ
$ lerna ls

ここに画像を挿入説明

  • クリーンアップnode_modules
$ lerna clean

式の実行

NPMスクリプトを実行するには、特定のパッケージを指定することができます。

$ lerna run <script> -- [..args] # 在所有包下运行指定

# 例如
$ lerna run test # 运行所有包的 test 命令
$ lerna run build # 运行所有包的 build 命令
$ lerna run --parallel watch # 观看所有包并在更改时发报,流式处理前缀输出

$ lerna run --scope my-component test # 运行 my-component 模块下的 test

lerna.jsonの決意

{
  "version": "1.1.3",
  "npmClient": "npm",
  "command": {
    "publish": {
      "ignoreChanges": [
        "ignored-file",
        "*.md"
      ]
    },
    "bootstrap": {
      "ignore": "component-*",
      "npmClientArgs": ["--no-package-lock"]      
    }
  },
  "packages": ["packages/*"]
}

バージョン:現在のライブラリのバージョン
npmClient:あなたは、デフォルトではNPMで、クライアントコマンドを指定することができます糸に設定することができます
command.publish.ignoreChanges:あなたはそれらの変更は公開されませんディレクトリまたはファイルを指定することができます
指定されていません。command.bootstrap.ignoreをパッケージブートストラップコマンドの影響
command.bootstrap.npmClientArgs:指定レルナのブートストラップ・コマンド・パラメーターは、デフォルトのパス
command.bootstrap.scope:それらのパッケージを指定するには、レルナのブートストラップコマンドによって影響を受けるであろう影響
のパッケージを:ディレクトリを指定

環境設定

  • Gitはレルナプロジェクトでは、コード管理はgitのことで行われます。だから、最初のローカル環境は、右のgitを持っていることを確認する必要があります。人々が開発に協力する必要がある場合は、正しいリンクgitの中央倉庫を作成します。あなたはgitのの基本的な動作を理解する必要があるので、ここでは説明しません。
  • あなたNPM倉庫管理パッケージは、公式ウェブサイトや企業のプライベートサーバー上で公開するかどうか、あなたは、倉庫やユーザー名の正しいアドレスが必要です。あなたは、ローカルNPMレジストリアドレスが正しいことを確認するには、以下のコマンドを実行することができます。
$ npm config ls
我々はレルナをインストールするには、グローバルなツールが必要レルナ
$ npm i -g lerna
# 或
$ yarn global add lerna
プロジェクトレルナを開始

この例では、私は私の地元のDになります:ルートディレクトリの下にレルナエンジニアリング/ジョブを初期化します。1、Dは:レルナ-デモという名前のフォルダの下の空/ジョブを作成します

$ mkdir lerna-demo
関連するディレクトリにcmdで初期化し、初期化
$ cd d:/jobs/lerna-demo
$ lerna init

実行が成功した後、ディレクトリには、ディレクトリ構造を生成します。

- packages(目录)
- lerna.json(配置文件)
- package.json(工程描述文件)

3、テストパッケージを追加し
、デフォルトでは、パッケージがパッケージディレクトリの下に置かれています。

# 进入packages目录
cd d:/jobs/lerna-demo/packages
# 创建一个packge目录
mkdir module-1
# 进入module-1 package目录
cd module-1
# 初始化一个package
npm init -y

以下のように、プロジェクトの下のディレクトリ構造が完成しています。

--packages
	--module-1
		package.json
--lerna.json
--package.json

図4は、インストールパッケージのそれぞれは、それがの公式ウェブサイトに記載されており、このステップを依存している
現在のレルナリポジトリのリーディングパック。すべての依存関係と相互リンクの依存関係をインストールします。

$ cd d:/lerna-demo
$ lerna bootstrap

現在のテストパッケージに、モジュール1には依存し、したがって、実際の状況に近いありません。あなたは、いくつかのモジュール-1 package.jsonファイルで、サードパーティのライブラリに依存追加する必要があります。このコマンドが終了し、実行時にこの場合、あなたはモジュール-1が既にインストール依存があります。

図5は、リリース時にリリースされ、あなたはgitのとツールが必要です。パブリッシュする前に、必ずこの時間はレルナプロジェクトがすでにリモートgitリポジトリに接続されていることを確認します。あなたはそれを表示するには、以下のコマンドを実行することができます

git remote -v
// print log
origin  [email protected]:meitianyitan/docm.git (fetch)
origin  [email protected]:meitianyitan/docm.git (push)

この記事のコードはGithubの上でホストされています。だから、このリモートリンク情報を表示します。あなたがリモートリポジトリとのリンクを持っていない場合は、まずそれにエラーメッセージとリンクに従って、githubのに空の倉庫を作成します。

$ lerna publish

プロンプトcmdをして、このコマンドを実行し、あなたには、ステップバイステップでは、リリースがpackgesことができます。
記事のコマンドの実装では実際には、レルナは多くの作業を行います。

-  Run the equivalent of  `lerna updated`  to determine which packages need to be published.
-  If necessary, increment the  `version`  key in  `lerna.json`.
-  Update the  `package.json`  of all updated packages to their new versions.
-  Update all dependencies of the updated packages with the new versions, specified with a  [caret (^)](https://docs.npmjs.com/files/package.json#dependencies).
-  Create a new git commit and tag for the new version.
-  Publish updated packages to npm.

この時点まで、それは流れの中で最も簡単なタスクレルナの一つです。しかしレルナさらに多くが検討されるのを待っています。
レルナは、問題を引き起こす可能性がある初心者を導入するために、ここで、2つの動作モード、独立モードおよび固定/ロックモードを持っていますが、それはあまりにも重要である、または言及する必要があるため。
全体が処理されるようレルナのデフォルト・モードでは、実際のレルナプロジェクトでは、このモードでは、/ロックモードを修正されます。各リリースのpackgesは、変更の有無にかかわらず、リリースの全額です。しかし、独立モードでは、レルナは変更のみpackgeを公開し、ファイルの変更をチェックし、Gitリポジトリを満たしています。

レルナのベストプラクティス

最大の役割を果たしてレルナ行うことができるようにするためには、経験に基づいてレルナを使用して、この時間は、ベストプラクティスをまとめました。以下は、機能の一部です。

采用Independent模式
根据Git提交信息,自动生成changelog
eslint规则检查
prettier自动格式化代码
提交代码,代码检查hook
遵循semver版本规范
大家应该也可以看出来,在开发这种工程的过程的,最为重要的一点就是规范。因为应用场景各种各样,你必须保证发布的packge是规范的,代码是规范的,一切都是有迹可循的。这点我认为是非常重要的。

バグ

バグのレルナ3.16.4
ここに画像を挿入説明
エントリが直接言葉を入力文句を言うでしょうか?カスタムバージョンを入力します。

私を追加してください学ぶ、wangchen20180818通信をWX

公開された77元の記事 ウォン称賛7 ビュー20000 +

おすすめ

転載: blog.csdn.net/qq_37653449/article/details/101241968