2015-04-17 27 views
2

我正在使用using npm as a build tool進行試驗。使用glob輸入(無Grunt或Gulp)的npm中的Concat使用

我想做一些簡單的事情,只需將所有的css文件連接在一起。我找不到一個只有這個模塊的npm模塊。有concat,但它沒有CLI接口。有很多gulp/grunt插件可以做到這一點,但我不希望這些依賴關係用於這種體驗。我也明白,我可以使用Unix的cat

cat a.css b.css > all.css 

但是,這並不支持通配符。我希望能夠這樣做:

concat app/**.css > dist/all.css 

這可能嗎?

回答

3

如果你在linux上,你可以使用cat

cat app/*.css > all.css 

如果要遞歸搜索文件夾,請使用find

find app -name "*.css" -exec cat {} \; > all.css 

既然你想要一些特定於節點的東西,你可以使用glob

以下內容作爲concat.js

var fs = require('fs'), 
    glob = require('glob'), 
    args = process.argv.splice(2); 

if(args.length !== 2) 
    return console.log('Incorrect usage. "node concat [glob] [output file]"'); 

if(fs.exists(args[1])) 
    fs.unlinkSync(args[1]); 
glob.sync(args[0]).forEach(function(file) { 
    fs.appendFileSync(args[1], fs.readFileSync(file, 'utf-8')); 
}); 

然後你會使用

node concat app/**/*.css all.css 

或者由於您使用的生成腳本,已經在的package.json以下

"scripts": { 
    "build": "node concat app/**/*.css all.css", 
} 

npm build 
+0

這難道不是隻有一個級別? – SimplGy

+0

是的。你可以用'find'遞歸地做到這一點。 –

+0

效果很好。更喜歡節點中的某些東西,因此它與平臺無關,但我們會看看是否有其他人知道方法 – SimplGy