パッケージがサブフォルダー内にある場合、githubからnpmパッケージをインストールすることはできますか?
たとえば、Microsoft BotBuilderリポジトリがあります。 https://github.com/Microsoft/BotBuilder
ただし、サブフォルダー「Node/core /」内にパッケージをインストールする必要があります。 https://github.com/Microsoft/BotBuilder/tree/master/Node/core/
それでは、どうすればnpmでインストールできますか?
追加 package.json
:
...
"scripts": {
"postinstall": "mkdir BotBuilder; cd BotBuilder; git init; git remote add -f Origin https://github.com/Microsoft/BotBuilder.git; git config core.sparseCheckout true; echo \"Node/core\" >> .git/info/sparse-checkout; git pull --depth=1 Origin master; cd ..; npm i ./BotBuilder/Node/core/"
...
},
...
パッケージのインストール後、postinstall
スクリプトが実行されています。
そしてステップバイステップ:
mkdir BotBuilder
cd BotBuilder
git init
git remote add -f Origin https://github.com/Microsoft/BotBuilder.git
git config core.sparseCheckout true
Node/core
チェックアウトリスト:echo "Node/core" >> .git/info/sparse-checkout
git pull --depth=1 Origin master
cd ..
npm i ./BotBuilder/Node/core/
少し話題から外れているかもしれませんが、質問に関連しているだけです
https://git-scm.com/book/en/v2/Git-Tools-Submodules
Gitサブモジュールは、他のリポジトリで使用できるgitリポジトリです(以降、スーパーモジュールと呼ばれます)。各サブモジュールには通常のブランチ機能とタグの品揃えがあり、各スーパーモジュールはバージョン管理されたプラグ可能なコンポーネントであり、個別に作業したり、スーパーモジュールと一緒に開発したりできます。
いくつかの便利なコマンド
サブモジュールを追加するには、スーパーモジュール内で次を実行します。
git submodule add <url-to-submodule-repo>
サブモジュールはまだ初期化して、リポジトリから取得する必要があります。
git submodule init git submodule update
以下を実行することにより、サブモジュールを持つスーパーモジュールを複製し、すべてのサブモジュールを取得できます。
git clone --recursive <url-to-supermodule>
サブモジュールディレクトリ内で次を実行することにより、サブモジュールのブランチにアップストリームの変更をプルできます。
git fetch
次に、次を実行してローカルコードを更新します。
git merge
以下は、スーパーモジュール内のすべてのサブモジュールをフェッチしてマージします。
git submodule update --remote
サブモジュールの特定のブランチを追跡する場合は、次を使用できます。
git config -f .gitmodules submodule.<my-submodule>.branch fantastic_new_implementation
スーパーモジュールとサブモジュールで作業していて、スーパーモジュールをプッシュした場合、サブモジュールに加えられた変更はローカルにのみ存在し、協力しているものはこれらの変更を認識しません。次のコマンドは、スーパーモジュールをプッシュする前に、サブモジュールがプッシュされたかどうかを確認します
git Push --recurse-submodules=check
最後に、有用なForEachコマンドがあります。これにより、各サブモジュールに対してコマンドを実行できます
git submodule foreach 'git checkout -b featureA