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的一部分