2016-12-11 10 views
0

私は最初のパッケージを開発中です。パッケージが動作しています。Laravel 5.3 Composerはパッケージ依存関係を更新していません

私のパッケージ(依存関係)にLaravels CollectiveのHTMLを使用したいと思います。

そのため私は、パッケージの作曲ファイルにこれを追加しました:私は

{ 
    "name": "vendor/package", 
    "description": "", 
    "license": "MIT", 
    "authors": [ 
    { 
     "name": "firstname lastname", 
     "email": "[email protected]" 
    } 
    ], 
    "minimum-stability": "stable", 
    "require": { 
    "twbs/bootstrap": "dev-master", 
    "laravelcollective/html": "5.3.*" 
    } 
} 

ました:(/パッケージ/ベンダー/パッケージこのcomposer.jsonは、パッケージのルートにある)

... 
"autoload": { 
    "classmap": [ 
     "database" 
    ], 
    "psr-4": { 
     "App\\": "app/", 
     "Vendor\\Package\\": "packages/vendor/package/src" 
    } 
}, 
... 

私がコンポーザー更新を行うと、パッケージの依存関係は更新されませんed。私はここで何が欠けていますか?

+0

ここに「composer update」の出力を表示しますか? –

+0

また、ベンダフォルダの内容は? –

答えて

1

パッケージがまだpackagist.orgにアップロードされていない場合は、ローカルコンポーザーリポジトリを定義する必要があります。 Laravels内部でアプリケーションcomposer.jsonこのようなローカルリポジトリを追加します。

"repositories": [ 
    { 
     "type": "path", 
     "url": "/full/or/relative/path/to/development/my-package" 
    } 
], 
"require": { 
    "my-package": "*" 
} 

あなたがパッケージLaravels内部composer.jsonなく内側パッケージsrcディレクトリを定義する必要が自身のcomposer.json。試してみて、この内部パッケージのcomposer.jsonのようにそれを定義します。

"require" : { 
    "twbs/bootstrap": "dev-master", 
    "laravelcollective/html": "5.3.*" 
}, 
"autoload" : { 
    "psr-4" : { 
     "PackageNamespace\\PackageClass\\" : "src/" 
    } 
}, 

UPDATE

適切なパッケージの開発を行うために、あなたは/vendor/以外のディレクトリであなたのパッケージファイルを維持する必要があります作曲家ディレクトリ。主な理由は、コンフリクトの問題がある場合や、コンシューマ/vendorの下のすべてをクリーンアップして設定する場合に、開発者が/vendorディレクトリ全体を削除できることです。私は非常に簡単な方法を使用して、私はで私自身のパッケージを保つ:あなたがリポジトリを認識する作曲のためにあなたのパッケージでのgitを初期化する必要があり

<application>/dev/packages/<package-namespace>/<package-name> 

。 gitのパッケージを作成するには、あなたのパッケージの場所に移動して、次のコマンドを実行します。

cd <application>/dev/packages/<package-namespace>/<package-name> 
git init 
git add * 
git commit -m "Initial commit" 

また、gitのが誰かを認識し、地元を許可できるようにするために、コミット前git config user.namegit config user.emailを設定する必要がありますコミット:私の例では

git config user.email "[email protected]" 
git config user.name "Your Name" 

、名前空間はlytrで、パッケージ名はtestpkgです。

<application>/dev/packages/<package-namespace>/<package-name>/composer.json<application>/dev/packages/lytr/testpkg)は次のようになります。私は"minimum-stability": "dev",が含ま

"repositories": [ 
    { 
     "type": "path", 
     "url": "<full-application-path>/dev/packages/lytr/testpkg" 
    } 
], 
"require" : { 
    "lytr/testpkg": "*" 
}, 
"minimum-stability": "dev", 

{ 
    "name" : "lytr/testpkg", 
    "description" : "Test package of Lytr", 
    "keywords" : [ 
     "test", 
     "package" 
    ], 
    "license" : "MIT", 
    "require" : { 
     "twbs/bootstrap" : "dev-master", 
     "laravelcollective/html" : "5.3.*" 
    }, 
    "autoload" : { 
     "psr-0" : { 
      "Lytr\\TestPkg\\" : "src" 
     } 
    }, 
    "extra" : { 
     "branch-alias" : { 
      "dev-master" : "1.0-dev" 
     } 
    }, 
    "minimum-stability" : "dev" 
} 

を次に、あなたのアプリケーション<application>/composer.jsonであなたは、このようなローカルgitリポジトリとあなたのパッケージを持っています我々はmaster-devバージョンを使用しているからです。その後、唯一のは、パッケージの要件に"twbs/bootstrap" : "dev-master",を持つcomposer updateコマンドを実行した後、我々は、コンソールウィンドウに次の出力が表示されます:

Composer update

そして、我々はパッケージcomposer.jsonを変更し、"laravelcollective/html" : "5.3.*",を必要とした後、我々はcomposer updateを行い、我々は作曲が適切laravelcollective/htmlパッケージをインストール参照してください。

Composer update

これは混乱していると思われるかもしれませんが、何とか過労ですが、これは作曲家用のパッケージを開発するための適切な方法です。パッケージをgitリポジトリに置いて、ローカルファイルではなくリポジトリをコンポーザに複製させることもできます。あなたがパッケージの開発を終えて、https://packagist.org/の下でそれをリリースすると、リポジトリとすべてのローカルgitのものがなくても、パッケージを他の通常のパッケージと同じようにしなければなりません。覚えておいてください、あなたはパッケージの開発段階にあり、生産段階にはありません。

+0

ローカルパスから自分のLaravelアプリケーションに自分のパッケージをインストールするのは間違いありませんか?もしそうなら、私はまだパッケージを開発しているので、それをしたくない。私が望むのは、パッケージの依存関係を含めることです。 – klaaz

+0

@klaazだから、あなたのパッケージファイルはどこにありますか?いくつかの* git *リポジトリやhttps://packagist.org/あるいはあなたのローカルマシンで? –

+0

@klaazこれは、パッケージを開発しているとき、ローカルのパッケージリポジトリを持っているとき、変更を加えて新しい機能を追加したいときに必要なものです。あなたがパッケージを完成させたら、それをhttps://packagist.org/にアップロードし、他の通常のパッケージと同様に、 'composer.json'アプリケーションの中にそれを必要とします。適切なパッケージ開発方法については、私の更新答えを見てください。 –

関連する問題