这是我index.html
中的相关部分:
<!-- build:js scripts/scripts.js -->
<script src="scripts/vendor/jquery.js"></script>
<script src="scripts/vendor/bootstrap.min.js"></script>
<script src="scripts/vendor/handlebars.runtime.js"></script>
<script src="scripts/vendor/ember.js"></script>
<script src="scripts/vendor/ember-data.js"></script>
<script src="scripts/templates.js"></script>
<script src="scripts/neuterapp.js"></script>
<!-- endbuild -->
(但最后两个委托是错的,这实际上是我的问题)
这是Gruntfile.js
:
useminPrepare: {
html: '<%= yeoman.app %>/index.html',
options: {
dest: '<%= yeoman.dist %>'
}
},
usemin: {
html: ['<%= yeoman.dist %>/*.html'],
css: ['<%= yeoman.dist %>/styles/*.css'],
options: {
dirs: ['<%= yeoman.dist %>']
}
},
我遇到的问题是templates.js
和neuterapp.js
都是生成的文件,因此它们不在<%= yeoman.app %>/scripts
中,而在<%= yeoman.dist %>/scripts
中。
这是我的(简化)目录结构:
webapp/
├── app
│ ├── app.js <--- for neuter
│ ├── controllers
│ ├── index.html
│ ├── models
│ ├── routes
│ ├── scripts
│ │ └── vendor <--- for usemin
│ ├── templates <--- for ember_templates
│ │ ├── template1.hbs
│ │ └── template2.hbs
│ └── views
├── dist
│ ├── index.html
│ └── scripts
│ ├── neuterapp.js <--- this must also be used for usemin!!!
│ └── templates.js <--- this must also be used for usemin!!!
└── Gruntfile.js
如何告诉usemin
包含一些生成的文件?
如果需要,这些是neuter
和ember_templates
的配置:
neuter: {
options: {
includeSourceURL: true
},
'<%= yeoman.dist %>/scripts/neuterapp.js': '<%= yeoman.app %>/app.js'
},
ember_templates: {
compile: {
options: {
templateName: function (sourceFile) {
return sourceFile.replace(/app\/templates\//, ''); // <%= yeoman.dist %>/scripts/
}
},
files: {
'<%= yeoman.dist %>/scripts/templates.js': [
'<%= yeoman.app %>/templates/**/*.hbs'
]
}
}
},
答案 0 :(得分:2)
您可以使用copy task来准备临时位置所需的usemin。
我建议你做什么:
usemin
&amp; useminPrepare
任务在 temp 上运行并输出到 dist 。