如何编译玉文件复制到目标文件夹使用咕噜(How to copy compiled jade file

2019-08-05 02:02发布

对于我工作的一个单页的应用程序,我有以下结构:

  • DIST
    • CSS
    • JS
    • LIB
    • 谐音
    • 的index.html
  • SRC
    • CSS
    • JS
    • LIB
    • 意见
      • 谐音
      • index.jade

目录DIST将由Express服务器被用来服务项目。 我有清洁DIST和复制的src / CSS,SRC / JS,SRC / lib目录dist琐碎繁重的任务(使用咕噜-的contrib清洁咕噜-contrib请复制 )。

问题在于SRC /人次 。 该目录包含需要被编​​译成HTML文件玉文件。 编译后我希望他们在DIST(的index.html在dist根,谐音为子目录)。

目前我使用的咕噜-的contrib玉任务来编译和复制玉文件。 我想将它们复制到DIST,因为我不想在编译的HTML文件添加到源代码控制。 但是,现在这是不是真的可行,因为你必须指定每一个玉文件(现在只剩下几个,但将增长):

   jade: {
        compile: {
            options: {
                pretty: true
            },
            files: {
                // TODO make one line
                'dist/index.html': ['src/views/index.jade'],
                'dist/partials/banner.html': ['src/views/partials/banner.jade'],
                'dist/partials/dashboard.html': ['src/views/partials/dashboard.jade'],
                'dist/partials/navbar.html': ['src/views/partials/navbar.jade'],
                'dist/partials/transfer.html': ['src/views/partials/transfer.jade']
            }
        }
    },

有没有办法使用咕噜-的contrib玉任务(或另一个)与目录过滤器? 像这样:

   jade: {
        compile: {
            options: {
                pretty: true
            },
            dir: {
                'dist': ['src/views']
            }
        }
    }

Answer 1:

澄清一下从步兵维基-扩展映射 :

grunt.file.expandMapping(patterns, dest [, options])

请注意,虽然此方法可用于以编程方式生成的文件阵列用于多任务,这样做在“构建文件动态对象”的部分中描述的声明性语法指南配置任务是优选的。

假设上面,配置如下所示:

files: [ { 
  expand: true, 
  src: "**/*.jade", 
  dest: "dist/", 
  cwd: "src/views", 
  ext: '.html'
} ];

同样的结果与声明的配置。



Answer 2:

我最终升级到0.4咕噜(这会导致一些问题,但我能处理)。

随着咕噜版本0.4,可以使用grunt.file.expandMapping :

    jade: {
        compile: {
            options: {
                pretty: true
            },
            files: grunt.file.expandMapping(['**/*.jade'], 'dist/', {
                cwd: 'src/views',
                rename: function(destBase, destPath) {
                    return destBase + destPath.replace(/\.jade$/, '.html');
                }
            })

        }
    },


Answer 3:

如果你想改变只能从.jade文件为.html的扩展名,另一种选择是使用flattenext参数,如下所示:

jade: {
    compile: {
        options: {
            data: { debug: false, title: 'My awesome application' }
        },
        files: grunt.file.expandMapping(['**/*.jade'], '<%= yeoman.dist %>/views', {
            cwd: '<%= yeoman.app %>/views',
            flatten: true,
            ext: '.html'
       })
    }
}

甚至更好(如解释在这里 ):

jade: {
    compile: {
        options: {
            data: { debug: false, title: 'My awesome application' },
            pretty: true
        },
        files: [
            {
                expand: true,
                cwd: '<%= yeoman.app %>/views',
                src: ['**/*.jade'],
                dest: '<%= yeoman.dist %>/views',
                ext: '.html'
            }
        ]}
}

谢谢。



文章来源: How to copy compiled jade files to a destination folder using grunt