Grunt.js输出并写入文件夹的内容?

目标:

dynamic地包含/static/js/**/*.js/static/css/**/*.css文件<head>

方法:

我正在使用客户端模板部分,所以在这个例子中,我想编写一切的文件path:

/static/js/**/*.js也是/templates/head.js.dust
/static/css/**/*.css也是/templates/head.css.dust

当然文件path是不够的。 我需要一种方法来预处理输出,以便每个“文件”被适当的标签包装,如:

 <!-- /templates/head.js.dust --> <script src="/static/js/assests/jquery.js"></script> <script src="/static/js/assests/jquery_ui.js"></script> <script src="/static/js/app.js"></script> ... <!-- /templates/head.css.dust --> <link src="/static/css/assests/jquery_ui.css"/> <link src="/static/css/app.css"/> ... 

题:

在那里有一个咕噜声模块已经做了这样的事情吗?

奖励积分: 如果不这样做,我该如何开始构build这样的东西?

你可以用一种相当简单的方式来做到这一点:

 grunt.registerMultiTask("assetAppend", "Append JS/CSS assets to a file", function() { var paths = grunt.file.expand( this.data.paths ), out = this.data.output, contents = ""; paths.forEach(function( path ) { if ( /\.js$/i.test( path ) ) { contents += '<script src="' + path + '"></script>'; } else if ( /\.css$/i.test( path )) { contents += '<link rel="stylesheet" type="text/css" href=' + path + ' />'; } }); grunt.file.write( out, contents ); }); grunt.initConfig({ assetAppend: { js: { paths: ["static/js/**/*.js"], output: "head.js.dust" }, css: { paths: ["static/css/**/*.css"], output: "head.css.dust" } } }); 

这个例子现在是我的插件grunt-contrib-assetpush的一部分