【发布时间】:2013-12-28 20:04:07
【问题描述】:
我有一个 express 应用程序,我在其中使用 bower 来管理前端依赖项。我还使用 grunt 通过连接、丑化、缩小和修改所有资产来构建前端,包括使用 grunt-usemin 的每个凉亭组件附带的脚本/样式。
为了实现这一点,我将所有已编译的资产(包括凉亭脚本/样式)移动到 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目标? -
谢谢,我会看看
copy:images目标是如何工作的。感谢 Anzeo 的链接。