たとえばindex.css
、別のcssファイルへのリンクが含まれています:
@import "http://<some_url>/bootstrap.css";
@import "http://<some_url>/plugin.css";
@import "app.css";
これらのファイルを Grunt JS と連結することは可能ですか?
Grunt API を見ると、ファイル関連はローカル ファイルのみに適用されるように見えます。 http://gruntjs.com/api/grunt.file
さらに、インポートを探して CSS ファイルを解析するソース コードは見たことがありません。
それらを連結するには、次のようにします。
ファイルをローカルにダウンロードし、通常の css フォルダーに配置してから、通常どおり Grunt concat を使用することをお勧めします。
次に、wget を使用して小さなスクリプトを作成し、これらの依存関係の新しいコピーをダウンロードしてから、grunt でビルドします。
これが尋ねられてからしばらく経っていることは知っていますが、似たようなことをしようとしているときに遭遇しました。grunt タスクを使用して URL からファイルを保存する 1 つの方法を次に示します。
module.exports = function(grunt) {
'use strict';
var http = require('http');
grunt.initConfig({
watch: {
scripts: {
files: ['**/*.cfc'],
tasks:['saveURL']
}
},
open:{
error:{
path:'http://<server>/rest/error.html'
}
}
});
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-open');
grunt.registerTask('default', ['watch']);
grunt.registerTask('saveURL', 'Write stuff to a file', function() {
var done = this.async();
var reloadurl = 'http://<server>/rest/index.cfm?rl';
grunt.log.writeln('Loading URL:' + reloadurl + ' ...');
http.get(reloadurl, function(res) {
var pageData = "";
if(res.statusCode != '200'){
//if we don't have a successful response queue the open:error task
grunt.log.error('Error Reloading Application!: ' + res.statusCode);
grunt.task.run('open:error');
}
res.setEncoding('utf8');
//this saves all the file data to the pageData variable
res.on('data', function (chunk) {
pageData += chunk;
});
res.on('end', function(){
//This line writes the pageData variable to a file
grunt.file.write('error.html', pageData)
done();
});
}).on('error', function(e) {
console.log("Got error: " + e.message);
done(false);
});
});
};