Grunt:在usemin中包含生成的文件

时间:2013-04-10 09:53:48

标签: gruntjs yeoman

这是我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.jsneuterapp.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包含一些生成的文件?

如果需要,这些是neuterember_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'
                ]
            }
        }
    },

1 个答案:

答案 0 :(得分:2)

您可以使用copy task来准备临时位置所需的usemin。

我建议你做什么:

  • 将您需要的应​​用文件从应用复制到 temp
  • 让生成文件的任务输出到 temp
  • 让你的usemin&amp; useminPrepare任务在 temp 上运行并输出到 dist