You will want to start with a directory in your project root for your packages under development (i.e. 'packages'). Once you release the package, and require it in another project, it will end up in that project's vendor directory. You will need to let the Laravel project you are using for development know where the package resides, by modifying the autoload attribute of the project's composer.json file:
"autoload": {
"classmap": [
"database"
],
"psr-4": {
"App\\": "app/",
"MyName\\MyPackage\\": "packages/myname/mypackage/src/"
}
},
In this directory scheme, the namespace, and the relative path from the package directory to the project's phpunit executable will be the same, whether the package is in the 'packages' or 'vendor' directory:
./../../../../vendor/bin/phpunit
This makes a testing workflow as mentioned by @sandervanhooft that much easier. The benefit for development and testing is that you don't have to change any paths or namespaces when you push your package to the public space for requiring in other projects.