У меня есть экспресс-приложение, в котором я использую беседу для управления внешними зависимостями. Я также использую grunt для создания внешнего интерфейса путем объединения, угашения, минимизации и изменения всех активов, включая скрипты/стили, которые отправляются с каждым компонентом Bower с использованием grunt-usemin
.Управление изображениями в пакетах с помощью grunt
Для этого я перемещаю все скомпилированные активы (включая скрипты/стили) в каталог dist/public
. В итоге я получил <cache-buster>.vendor.js
и файл <cache-buster>.vendor.css
, в котором содержатся все оптимизированные компоненты.
Вопрос в том, как мне управлять изображениями, которые поставляются с различными пакетами колонок? Я мог бы вручную переместить их в свою папку images
, но я предпочел бы оставить их упакованными в bower_components
(где они принадлежат, на мой взгляд), и оставьте это, чтобы хрюкать во время процесса сборки.
Любой вход будет оценен по достоинству.
Gruntfile.js (экстракт)
rev: {
dist: {
files: [{
src: [
'dist/public/css/{,*/}*.css',
'dist/public/js/{,*/}*.js',
'dist/public/img/{,*/}*.{gif,jpeg,jpg,png}'
]
}]
}
},
useminPrepare: {
options: {
dest: 'dist/public'
},
jade: ['dist/views/{,*/}*.jade']
},
usemin: {
jade: ['dist/views/{,*/}*.jade'],
options: {
assetsDirs: ['dist/public'],
patterns: {
jade: require('usemin-patterns').jade
}
}
},
concurrent: {
server: [
'stylus', 'coffee'
],
dist: [
'stylus', 'coffee'
]
},
copy: {
dist: {
files: [{
expand: true,
cwd: 'views',
dest: 'dist/views',
src: '{,*/}*.jade'
}]
}
}
});
grunt.registerTask('server', [
'clean:server',
'concurrent:server',
'express:server',
'watch'
]);
grunt.registerTask('build', [
'clean:dist',
'concurrent:dist',
'copy:dist',
'useminPrepare',
'concat',
'uglify',
'cssmin',
'rev',
'usemin'
]);
layout.jade (экстракт)
//-<!-- build:css(assets) css/vendor.css -->
link(href='/bower_components/nivo-slider/nivo-slider.css')
//-<!-- endbuild -->
//-<!-- build:css(.tmp) css/application.css -->
link(href='/css/one.css')
link(href='/css/two.css')
//-<!-- endbuild -->
//-<!-- build:js(assets) js/vendor.js -->
script(type='text/javascript', src='/bower_components/jquery/jquery.js')
script(type='text/javascript', src='/bower_components/nivo-slider/jquery.nivo.slider.js')
//-<!-- endbuild -->
//-<!-- build:js(.tmp) js/application.js -->
script(type='text/javascript', src='/js/one.js')
script(type='text/javascript', src='/js/two.js')
//-<!-- endbuild -->
Почему бы просто не добавить цель 'copy: images'? – bevacqua
См. Http://stackoverflow.com/questions/18254068/how-to-rewrite-urls-of-images-in-vendor-css-files-using-grunt – thomaux
Спасибо, я посмотрю, как «копировать: изображения» 'target будет работать. Спасибо за ссылку Anzeo. – Feech