使用 glob 输入在 npm 中进行 Concat(无 Grunt 或 Gulp)

Concat in npm using a glob input (no Grunt or Gulp)

我正在试验 using npm as a build tool

我想做一些简单的事情,只需将所有 css 文件连接在一起即可。我找不到仅执行此操作的 npm 模块。有 concat,但它没有 CLI 界面。有很多 gulp/grunt 插件可以做到这一点,但我不希望这些依赖项用于此实验。我也知道我可以使用 unix 的 cat:

cat a.css b.css > all.css

但这不支持 globbing。我希望能够做到这一点:

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

这可能吗?

如果你在 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