使用 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
我正在试验 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