2017-06-02 32 views
0

我们正在尝试使用作曲家来处理wordpress网站的依赖关系。我想在这些依赖中包含wordpress本身。我正在尝试将wordpress安装到项目的根目录。所有其他插件等正在安装基于安装程序路径正确..作曲家自定义安装目录 - 根

我已经尝试使用fancyguy/webroot安装程序,但擦拭包安装到 也试过mnsami/composer-custom-目录安装程序,但也抹去目录。

我有一些根目录下的文件,我不想删除 - 比如composer.json,.tfignore和suchlike。

是我必须让它安装到/ vendor然后运行安装后脚本将其移动到我想要的位置的唯一选项?或者是有另一种选择我缺少

这里是一个我试图为根目录,安装

{ 
    "name": "the/name", 
    "description": "description", 
    "repositories": [ 
    { 
     "type": "composer", 
     "url": "https://wpackagist.org" 
    }, 
    { 
     "type": "package", 
     "package": { 
     "name": "wordpress", 
     "type": "webroot", 
     "version": "4.7.5", 
     "dist": { 
      "type": "zip", 
      "url": "https://github.com/WordPress/WordPress/archive/4.7.5.zip" 
     }, 
     "require": { 
      "fancyguy/webroot-installer": "1.0.0" 
     } 
     } 
    } 
    ], 
    "require-dev": { 
    "wpackagist-plugin/query-monitor": "2.13.4", 
    "wordpress": "4.7.5", 
    "fancyguy/webroot-installer": "1.0.0" 
    }, 
    "require": { 
    "wpackagist-plugin/advanced-custom-fields": "4.4.11", 
    ...etc 
    }, 
    "extra": { 
    "webroot-dir": ".", 
    "webroot-package": "wordpress", 
    "installer-paths": { 
     "library/plugins/{$name}": [ "type:wordpress-plugin" ] 
    } 
    }, 
    "scripts": { ...} 
} 

这里使用的作曲家,自定义目录安装的composer.json。

{ 
    "name": "the/name", 
    "description": "description", 
    "repositories": [ 
    { 
     "type": "composer", 
     "url": "https://wpackagist.org" 
    }, 
    { 
     "type": "package", 
     "package": { 
     "name": "wordpress", 
     "type": "library", 
     "version": "4.7.5", 
     "dist": { 
      "type": "zip", 
      "url": "https://github.com/WordPress/WordPress/archive/4.7.5.zip" 
     } 
     } 
    } 
    ], 
    "require-dev": { 
    "mnsami/composer-custom-directory-installer": "1.1.*", 
    "wordpress": "4.7.5" 
    }, 
    "require": { 
    "wpackagist-plugin/advanced-custom-fields": "4.4.11", 
    ...etc 
    }, 
    "extra": { 
    "installer-paths": { 
     "library/plugins/{$name}": [ "type:wordpress-plugin" ], 
     "./": [ "wordpress" ] 
    } 

    }, 
    "scripts": { ... } 
} 

回答

0

我相信这是作曲家安装程序的工作原理。从阅读完成后,它会清除旧文件,以确保版本没有任何交叉污染。它不像一个可以处理差异的git checkout/merge,而是可以根据需要进行干净安装(缓存类型)。

我建议您不要将任何正在创作的文件保存在您正在安装的文件所在的同一文件夹中,而应采取将所有内容安装并编译到分发文件夹的方法。

利用网络包或吞噬等工具,加上NPM和作曲家来处理所有的编译,并保留你的分发文件夹作为可以被吹走和复制的东西。它增加了一些开销,但允许所有工具进行交互而不会造成文件丢失。

例如我典型的回购看起来如下。使用所有不同的工具,dist完全是gitignored,但是composer和build工具编译成它。从那里,如果我想FTP或使用CI/CD我可以,但我有一个干净的文件夹,永远不会存储,并包含整个项目,一旦我运行的工具。

/dist 
/src (where any files I'm authoring reside) 
composer.json 
package.json 
gulpfile.js 
etc... 

快速更新到此。一直在玩更多的自己玩。看来composer安装程序的扩展版本不会安装在其他目录之上。我已经做了以下这似乎每次工作(仍然需要部署虽然测试)

"extra": { 
    "installer-types": ["cms-core"], 
    "installer-paths": { 
     "public/wp": ["type:cms-core"], 
     "public/wp-content/plugins/{$name}/": ["type:wordpress-plugin"], 
     "public/wp-content/themes/{$name}/": ["type:wordpress-theme"] 
    } 
}, 
"repositories":[ 
    { 
     "type": "composer", 
     "url": "https://wpackagist.org" 
    }, 
    { 
     "type": "package", 
     "package": { 
      "name": "wordpress", 
      "type": "cms-core", 
      "version": "4.7.5", 
      "dist": { 
       "type": "zip", 
       "url": "https://github.com/WordPress/WordPress/archive/4.7.5.zip" 
      } 
     } 
    } 
], 
"require": { 
    "composer/installers": "^1.3", 
    "oomphinc/composer-installers-extender": "^1.1", 
    "wpackagist-plugin/wordpress-seo": "^4.8", 
    "wordpress": "^4.7" 
}, 
"scripts": { 
    "post-update-cmd": [ 
     "cp -R public/wp/ public && rm -rf public/wp" 
    ] 
}`