pipe-dream / laravel-create

Create Laravel projects really fast
1.31k stars 109 forks source link

Add a tab/place for easy-installing the most popular laravel composer packages #23

Closed elbojoloco closed 5 years ago

elbojoloco commented 5 years ago

A lot of times after installing a new application the same recurring packages are installed that are just "essential" for every laravel development environment.

Examples: laravelbarryvdh/laravel-debugbar laravel/envoy laravel/horizon predis/predis guzzlehttp/guzzle

And this is just a simple list, but you get the idea, just check which packages you want installed and pipe-dream/laravel will do the rest!

ajthinking commented 5 years ago

Great idea! It would be really neat to get some help/suggestions for dependencies. There is a similar idea listed here: https://trello.com/c/fsCCPlv8 (for custom commands)

A general approach would be to create a JSON/dependency-Pipe that manages composer.json / package.json or any JSON file basically. Will have to tinker with that.

I think this will be pushed back to next version though since its not critical. Keeping this suggestion in Trello and closing this issue for now, to keep it somewhat tidy here. But please feel free to continue discussion :)

elbojoloco commented 5 years ago

Here are some more suggestions:

barryvdh/laravel-ide-helper laravel/tinker laravel/telescope laravel/socialite laravel/passport laravel/dusk laravel/scout jenssegers/agent rickselby/laravel-gate-cache

Note that laravel/envoy must be installed globally, so it's not as simple as just putting it inside composer.json, though taking into account only the packages that are easily writable to composer.json, it shouldn't be that big of a feature right?

ajthinking commented 5 years ago

JSON manipulation approach

Setting up a ComposerPipe is easy. By default it could have the top 100 packages selectable in a settings tab with sensible defaults. Though not sure how it will keep dependency versions compatible and up to date. Example (see the numbers!):

        "beyondcode/laravel-dump-server": "^1.0",
        "filp/whoops": "^2.0",
        "fzaninotto/faker": "^1.4",
        "mockery/mockery": "^1.0",
        "nunomaduro/collision": "^3.0",
        "phpunit/phpunit": "^7.5"

Actually calling composer executable

The alternative, running exec('composer require user/package') or using system() or similar can be really painful in my experience, a rabbit hole me myself wont enter right now :) But I would be happy to merge PRs.

elbojoloco commented 5 years ago

Definitely go for JSON manipulation, I was thinking since this package is used for generating NEW projects, we can assume latest stable version for all composer packages (let composer decide compatibility among deps).