22

非常に単純なpre-commitスクリプトを作成しました:-

#!/usr/bin/env sh

# Run tests
npm test
if [ $? -ne 0 ]; then
  echo "Tests failed. Aborting.."
  exit 1
fi

exit 0

git commitコマンドラインで(テストに失敗して)実行すると、期待される出口1がメッセージとともに表示されますTests failed. Aborting..

ただし、GitHub for Macを使用すると、次のようになります。

.git/hooks/pre-commit: line 5: npm: command not found
Tests failed. Aborting..
 (256)

npmGitHub for Macが使用している実行環境では利用できないのではないかと推測していますが、これを修正する方法を模索していると、頭がおかしくなります。

4

4 に答える 4

28

解決しました。グローバルにインストールされたノードモジュールが最終的に/usr/local/binは、事前コミットの開始時に以下を追加する必要がありました。

PATH=$PATH:/usr/local/bin:/usr/local/sbin

つまり、実行時にとの両方/usr/local/binを追加/usr/local/sbinします。PATH

于 2012-10-14T14:31:03.370 に答える
7

GithubデスクトップやSourcetreeなどのGUI環境で使用できる$PATH変数は、ターミナルで使用できるものとは異なります。デフォルトでは、GUI環境で使用可能な$PATHはノードモジュールを見つけることができません。前の回答で述べたように、追加することで/ usr / local/binがパスにあることを確認できます

PATH=$PATH:/usr/local/bin:/usr/local/sbin

私の場合、Node Version Managerを使用しているため、これは機能しませんでした。NodeVersion Managerは、さまざまなバージョンのNodeを格納し、Nodeのバージョンのアップグレードと切り替えを容易にします。Nodeの各バージョンのnode_modulesを個別のファイルに保存します。この問題を回避するために使用したコードは次のとおりです。

#!/usr/bin/env bash

PATH="/usr/local/bin:$PATH"

if [ -f $HOME/.nvm/nvm.sh ]
then
  . $HOME/.nvm/nvm.sh
  PATH="$HOME/.nvm/versions/node/$(nvm current)/bin:$PATH"
fi

これはNVMをチェックし、存在する場合はそれをロードし、それを使用して、現在使用されているバージョンのNodeのノードモジュールへのパスを見つけます。ノードモジュールにアクセスしようとしているだけで、特別なことをする必要がない場合は、sbinフォルダの追加をスキップできます。/usr/local/sbin

于 2017-04-12T13:45:21.333 に答える
0

私にとっては、pre-commitから呼び出されていた依存関係がインストールされていなかったということでした。私の場合、これはだっcomposerたので、brew install composer私を助けてくれました。

your-project-directory/.git/hooks/pre-commit今後のぞき見のために、お気に入りのテキストエディタで開いて、pre-commitファイルで呼び出されている依存関係が欠落していないかどうかを確認し、必要に応じて欠落している依存関係をインストールします。

于 2019-06-11T13:45:55.633 に答える
0

私は実行することによってそれを解決しました:

sudo launchctl config user path "$(brew --prefix)/bin:${PATH}"

そして、このコンテンツを含むファイルを(プロジェクトフォルダーではなく).huskyrcホームフォルダーに作成します。~

# This loads nvm.sh and sets the correct PATH before running hook
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"

私はハスキーFAQからのこれらの指示に従いました。

于 2022-02-27T22:03:49.587 に答える