在使用gulp构建时,如何让composer正确安装依赖项?
我的构建过程设置输出到一个固定的位置,../sites/www/public_html
或../sites/dev/public_html
取决于环境参数是否传递给gulp任务。
我想自动化composer安装,更新和优化,以输出正确的供应商文件在../sites/www/vendor
或../sites/dev/vendor
无论何时构建是最初运行或只是优化的基础上,任何观察php文件正在改变。
我的构建文件夹具有以下结构:
source/
bower.json
composer.json
composer.lock
gulpfile.json
package.json
我的示例composer.json包含以下内容:
{
"name": "mycomposer/mycomposer",
"version": "1.0.0",
"autoload": {
"psr-4" : {
"mycomposer\\": "public_html/app/mycomposer"
}
},
"require": {
"rollbar/rollbar": "^1.3",
"vlucas/phpdotenv": "^2.4.0"
}
}
我尝试了一个gulp-compose和任务来安装composer库,并为本地第一方库运行dumpautoload
gulp.task('composer', function() {
var dest = argv.live ? 'www' : 'devsite',
env = '../sites/' + dest + '/public_html';
$.composer('config vendor-dir ' + env.replace('public_html', 'vendor') );
$.composer({
"no-ansi": true,
"no-dev": true,
"no-interaction": true,
"no-progress": true,
"no-scripts": true,
"optimize-autoloader": true
});
$.composer('dumpautoload ', {
optimize: true
});
});
任务完成后,我发现$baseDir
变量引用了构建目录
预期
$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);
输出
$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname(dirname(dirname($vendorDir))).'/mybuild';
这是我可以实现的吗?或者我真的应该在构建过程之外单独运行composer吗?
谢谢
1条答案
按热度按时间ee7vknir1#
我也遇到过类似的问题。我使用的是gulp-composer包。
gulpfile.js文件名
在我的例子中,我使用composer installed globaly,但是你可以在
opts{}
中选择bin: 'path-to-composer.phar'
的bin路径。