我已经开发了一个 Symfony 包,并且正在尝试创建一个配方。在将其提交到 之前recipes-contrib,我想对其进行测试,因此我遵循了私有配方的说明- 不是因为我想要私有配方(也就是说,捆绑包和配方都不是私有 GitHub 项目意义上的“私有”) )。
我已经阅读、重新阅读、然后再次阅读创建菜谱的文档,我觉得我错过了一个非常重要的步骤。私有存储库的文档仅讨论 package.version.json 文件,例如
{
"manifests": {
"acme/private-bundle": {
"manifest": {
"bundles": {
"Acme\\PrivateBundle\\AcmePrivateBundle": [
"all"
]
},
"copy-from-recipe": {
"config/": "%CONFIG_DIR%"
}
},
"files": {
"config/packages/acme_private.yaml": {
"contents": [
"acme_private:",
" encode: true",
""
],
"executable": false
}
},
"ref": "7405f3af1312d1f9121afed4dddef636c6c7ff00"
}
}
}
Run Code Online (Sandbox Code Playgroud)
该文件似乎是某个命令的输出,该命令以配方预期的格式读取文件contrib:一个目录结构,其中包含config路由和包的目录,可能是一个src目录等。
显然,没有人会逐行手动输入 YAML 文件(或 PHP!)作为密钥中的字符串列表content。
看起来master食谱的分支recipes-contrib包含目录结构,并且flex/main分支包含“编译的”JSON 食谱文件。
但在私有配方说明中,没有说明如何从 DX 友好文件获取 …
我使用该命令composer require otra/otra:dev-develop --no-update --no-cache && composer update --no-autoloader来安装我自己的框架。
我已将此部分放在composer.json我的框架中:
"scripts": {
"pre-install-cmd": "@composer config bin-dir bin/"
}
Run Code Online (Sandbox Code Playgroud)
但是 Composer 不运行它。这是否正常,Composer 是否将其视为依赖项而不是根包,因此它不允许我的脚本运行?
如果是这种情况,我怎么会有相同的行为?
我想要 :
bin文件夹中,vendor/bin而不必要求用户手动执行符号链接(或其他解决方案)web文件夹从我的框架复制到项目的根目录。编辑:使用create-project命令
如果我输入composer create-project otra/otra:dev-develop crashtest --remove-vcs,我会得到这个composer.json:
{
"name": "otra/otra",
"type": "library",
"description": "The OTRA PHP framework",
"keywords": ["framework"],
"homepage": "https://github.com/lperamo/otra",
"license": "X11",
"authors": [
{
"name": "Lionel Péramo",
"email": "contact@lionel-peramo.com",
"homepage": "https://wexample.com"
}
],
"bin" : ["otra.php"], …Run Code Online (Sandbox Code Playgroud)