sni*_*ady 11 php symfony twig composer-php bootstrap-4
我想从我的twig模板中加载供应商资产,使用composer在供应商目录中下载.
使用相对路径是一种解决方案(在这个例子中我将包括bootstrap css,但同样的问题是对于作曲家所需的任何其他lib,如jQuery,jQueryUI等)
<link rel="stylesheet" href="{{ asset('../vendor/twbs/bootstrap/dist/css/bootstrap.min.css') }}" >
Run Code Online (Sandbox Code Playgroud)
Symfony文档建议使用asset:install来生成从供应商目录到公共的符号链接,但我无法理解它是如何工作的.assets:install -h不太清楚,让我了解如何将特定的供应商路径链接到公共目录.
创建一个simlink与
ln -s /path/of/vendor/lib /path/public/dir
Run Code Online (Sandbox Code Playgroud)
工作正常但是,每次我使用composer查找更新时,都会删除创建的符号链接.
是否有关于"最佳实践"的想法,以包含供应商目录中的资产?
谢谢
就“最佳实践”而言,我通常将npm与gulp或类似的东西一起使用,它会生成分发 css 和 js 文件,这些文件输出到public/.
package.json这是最近项目文件中的示例
{
"devDependencies": {
"bootstrap": "^4.1.3",
"gulp": "^4.0.0",
"gulp-concat": "^2.6.1",
"gulp-sass": "^3.1.0"
},
"scripts": {
"compile:styles": "gulp styles"
}
}
Run Code Online (Sandbox Code Playgroud)
而是运行npm install --save-dev bootstrap gulp gulp-concat gulp-sass以获取最新版本等。
gulpfile.js你也需要这个
var gulp = require('gulp');
var concat = require('gulp-concat');
var sass = require('gulp-sass');
gulp.task('styles', function(){
return gulp
.src([
'app/Resources/sass/main.scss',
])
.pipe(sass({outputStyle:'compressed', includePaths: ['node_modules']}).on('error', sass.logError))
.pipe(concat('styles.min.css'))
.pipe(gulp.dest('public/css'));
});
Run Code Online (Sandbox Code Playgroud)
设置完成后,您可以npm run compile:styles从控制台运行,app/Resources/sass/main.scssSASS 文件将被预处理、缩小并输出到public/css/styles.min.css.
请注意,gulp 文件包含 node_modules 文件夹,因此您可以在main.scss文件中导入 bootstrap,例如
$primary: #55a367;
@import 'bootstrap/scss/bootstrap';
Run Code Online (Sandbox Code Playgroud)
来自树枝模板:
<link rel="stylesheet" type="text/css" href="{{ asset('css/styles.min.css') }}">
Run Code Online (Sandbox Code Playgroud)
我通常会同时承诺main.scss和styles.min.css