Dan*_*n B 12 php npm laravel composer-php bower
在我的composer.json文件中,我在脚本部分中有以下内容:
"post-install-cmd": [
"php artisan clear-compiled",
"php artisan optimize",
"npm install",
"bower install"
]
Run Code Online (Sandbox Code Playgroud)
运行'composer install'时,这将导致npm和bower安装所有依赖项,默认情况下包括devDependencies.在进行生产推广时(例如'composer install --no-dev'我要启动'npm install --production'和'bower install --production')
据我所知,似乎没有办法根据传递的标志更改为'post-install-command'指定的列表,或者设置变量然后可以传递给post中的命令的方法-install-CMD.
我错过了什么吗?似乎不可能使用composer仅使用配置来进行开发和生产安装.我是否真的必须composer install --no-scripts在生产中使用,然后自己手动运行所有四个命令?这看起来有点笨重.
kfr*_*end 13
您可以随时使用PHP为您执行环境检测,然后从同一脚本安装其他依赖项.这不是很好而且很干净,比如在post-install-cmd中包含npm和bower,但它会为你提供你想要的东西.
"post-install-cmd": [
"php artisan clear-compiled",
"php artisan optimize",
"php path/to/installer.php"
]
Run Code Online (Sandbox Code Playgroud)
示例installer.php:
// Logic to determine the environment. This could be determined many ways, and depends on how your
// application's environment is determined. If you're making use of Laravel's environment
// capabilities, you could do the following:
$env = trim(exec('php artisan env'));
// Clean up response to get the value we actually want
$env = substr($env, strrpos($env, ' ') + 1);
$envFlag = ($env === 'production')
? '--production'
: '';
// Install npm
passthru("npm install {$envFlag}");
// Install bower
passthru("bower install {$envFlag}");
Run Code Online (Sandbox Code Playgroud)
您可以使此示例更加健壮,甚至可以为它创建Artisan命令.
这会起作用;
"post-update-cmd": [
"php artisan clear-compiled",
"php artisan optimize",
"npm install",
"bower install"
],
"post-install-cmd": [
"php artisan clear-compiled",
"php artisan optimize",
"npm install --production",
"bower install --production"
]
Run Code Online (Sandbox Code Playgroud)
也就是说,您应该在开发环境中运行“更新”,并且只在生产环境中运行“安装”。
| 归档时间: |
|
| 查看次数: |
18691 次 |
| 最近记录: |