Grunt usemin与模板

gan*_*ang 7 gruntjs yeoman

给定以下目录结构:

– Gruntfile.js
– app
    |– index.php
    |– js
    |– css
    |– templates
         |– template.php
– dist
Run Code Online (Sandbox Code Playgroud)

如何配置grunt usemin来更新模板文件中相对于使用模板的index.php的样式和脚本的引用?

目前任务看起来像这样:

useminPrepare: {
    html: '<%= yeoman.app %>/templates/template.php',
    options: {
        dest: '<%= yeoman.dist %>'
    }
},
usemin: {
    html: ['<%= yeoman.dist %>/{,*/}*.php'],
    css: ['<%= yeoman.dist %>/css/*.css'],
    options: {
        dirs: ['<%= yeoman.dist %>']
    }
}
Run Code Online (Sandbox Code Playgroud)

模板内部的块看起来像这样:

<!-- build:js js/main.js -->
    <script src="js/script1.js"></script>
    <script src="js/script2.js"></script>
<!-- endbuild -->
Run Code Online (Sandbox Code Playgroud)

gan*_*ang 4

好吧,我发现了:解决方案是使用备用搜索路径选项:

<!-- build:<type>(alternate search path) <path> -->
... HTML Markup, list of script / link tags.
<!-- endbuild -->
Run Code Online (Sandbox Code Playgroud)

构建块现在看起来像这样:

<!-- build:js(app) js/main.js -->
    <script src="js/script1.js"></script>
    <script src="js/script2.js"></script>
<!-- endbuild -->
Run Code Online (Sandbox Code Playgroud)

usemin 任务配置如下:

usemin: {
    html: '<%= yeoman.dist %>/templates/template.php',
    css: ['<%= yeoman.dist %>/css/*.css'],
    options: {
        dirs: ['<%= yeoman.dist %>']
    }
}
Run Code Online (Sandbox Code Playgroud)