zendframework / zend-expressive-skeleton

Begin developing PSR-7 middleware applications in seconds!
BSD 3-Clause "New" or "Revised" License
136 stars 90 forks source link

Using composer create-project --no-dev gives an error #62

Closed geerteltink closed 8 years ago

geerteltink commented 8 years ago

Using the --no-dev option fails to install whoops because it's added to composer require-dev.

Fatal error: Uncaught Error: Class 'Whoops\Run' not found in D:\projects\zend-expressive-skeleton-test\vendor\zendframework\zend-servicemanager\src\Factory\InvokableFactory.php on line 32

Without the --no-dev option it installs all develop requirements the first time which is why it was added to the docs. These packages are required for development and unit testing.

The solutions I can think of is:

weierophinney commented 8 years ago

@xtreamwayz I found the same after testing the RC6 release (really, really wish it were simpler to use local repos with the create-project command to track this sort of thing down!). I figured you'd notice the issues and, hopefully, reach out to assist. :smile:

After I get the release announcement written and posted, and then take care of a few lingering zend-servicemanager issues, I'll be available to brainstorm and test some ideas. Do you have any pointers on how we might try out one of the first three ideas?

geerteltink commented 8 years ago

To test locally on windows I use a cmd and json file. I'm sure you can use the same for linux as well:

test-expressive-installer.cmd

@ECHO OFF

CALL rm -rf zend-expressive-skeleton-test/
CALL composer create-project --no-dev zendframework/zend-expressive-skeleton zend-expressive-skeleton-test --stability="dev" --keep-vcs --prefer-dist --repository-url="test-expressive-installer.json"
CD zend-expressive-skeleton-test
php -S localhost:8000 -t public

test-expressive-installer.json

{
    "package": {
        "name": "zendframework/zend-expressive-skeleton",
        "version": "1.0.0",
        "source": {
            "url": "/projects/zend-expressive-skeleton/.git",
            "type": "git",
            "reference": "feature/awesome-new-feature-branch"
        }
    }
}

This is also the reason why there are so many small commits sometimes :)

I'm doing some research now and see if I can find something.

renanbr commented 8 years ago

I didn't see this issue before, sorry I made some comments at #63 related to this one

geerteltink commented 8 years ago

skip error handler prompt if --no-dev is given; or

The reason the --no-dev is added is because without it, composer installs all dev-requirements on first install. Those packages are there for unit testing and developing the installer.

move filp/whoops to the require entries.

This might be a fast work around. However I think it should belong to the the dev dependency. Right now only whoops, phpunit and php_codesniffer are in require-dev, but this might change in the future. Basically it means that you can't run tests before doing composer update if you go this way.

weierophinney commented 8 years ago

Moving filp/whoops to the require section is not a good idea; it's not something you want installed in production. I think we can likely find a better solution; it just won't be obvious.

geerteltink commented 8 years ago

Found it. Working on a solution now.