我有一个基于 yeoman-generator 支持的 grunt 项目generator-webapp
,如果它有任何帮助,你可以在GitHub 上找到它
grunt 项目使我们完成了grunt-usemin
任务。
我的项目涉及建立一个多语言网站,为了保持整洁,我决定将所有以某种语言编写的页面放在该语言的 2 个字母短代码之后的文件夹名称中。
| project/
|--dist/
|----en/
|------index.html
|------404.html
|------...
|----fr/
|------index.html
|------404.html
|------...
这些文件由车把模板制作并使用assemble
. 在布局中,我有构建块,usemin
例如
<!-- build:css(.tmp) styles/main.css -->
<link rel="stylesheet" href="../styles/main.css">
<!-- endbuild -->
<!-- build:js scripts/vendor/modernizr.js -->
<script src="../bower_components/modernizr/modernizr.js"></script>
<!-- endbuild -->
在一个完美的世界中,这将转化为
<link rel="stylesheet" href="../styles/main.css">
<script src="../scripts/vendor/modernizr.js"></script>
而是显示
<link rel="stylesheet" href="styles/main.css">
<script src="scripts/vendor/modernizr.js"></script>
在我的情况下,这不太理想。的相关部分Gruntfile.js
看起来像这样
useminPrepare: {
options: {
dest: '<%= yeoman.dist %>'
},
html: [
'<%= yeoman.app %>/fr/{,*/}*.html',
'<%= yeoman.app %>/en/{,*/}*.html'
]
},
usemin: {
options: {
dirs: ['<%= yeoman.dist %>']
},
html: [
'<%= yeoman.dist %>/fr/{,*/}*.html',
'<%= yeoman.dist %>/en/{,*/}*.html'
],
css: ['<%= yeoman.dist %>/styles/{,*/}*.css']
}
我试图通过将其设置为以及将构建块更改为来使用该basedir
选项<%= yeoman.dist %>
<!-- build:css(.tmp) ../styles/main.css -->
<link rel="stylesheet" href="../styles/main.css">
<!-- endbuild -->
<!-- build:js ../scripts/vendor/modernizr.js -->
<script src="../bower_components/modernizr/modernizr.js"></script>
<!-- endbuild -->
但不幸的是无法获得正确的输出。
更具体地说,第一个没有改变任何东西,第二个有文件夹scripts
并且styles
在层次结构中输出了一个太高的级别
| project/
|--app/
|--dist/
|--styles/
|--scripts/
代替
| project/
|--app/
|--dist/
|----styles/
|----scripts/
有人会碰巧知道该怎么做吗?这似乎是一个相当简单的用例,但我无法通过 Google、GitHub 或 SO 找到我需要的帮助......