我想为npm创建一个执行以下操作的脚本:
将其写入JS文件,格式如下:
module.exports = [
"folder/filename.png",
"folder/subfolder/filename.png"
];
我目前正在使用Linux中的cli这样做:
echo 'module.exports = [' | tee files.js && find . -name "*png" | sed s:"./":" '": | sed s:".png":".png',": | tee files.js --append && echo '];' | tee files.js --append
这有点做作,而不是真正的跨平台。有没有提供类似功能的npm软件包?我有点迷失了。
答案 0 :(得分:0)
我不觉得傻。从来没有直接使用过节点,但写一个脚本来做这件事是微不足道的。
#!/usr/bin/env node
var fs = require('fs');
var list = [];
function traverse(folder) {
var files = fs.readdirSync(folder);
for (var i = 0; i < files.length; i++) {
if (files[i].indexOf('.png') > -1 || files[i].indexOf('.jpg') > -1) {
list.push(folder + "/" + files[i]);
console.log(i + folder + "/" + files[i]);
} else {
var path = folder + "/" + files[i];
if (fs.lstatSync(path).isDirectory()) {
traverse(path);
}
}
}
}
function start() {
traverse('./images');
var string = "module.exports = [\n";
for (var i = 0; i < list.length; i++) {
string += " '" + list[i];
if (list[i] !== list[list.length - 1]) {
string += "',\n";
} else {
string += "'\n];"
}
}
fs.writeFile("./src/assets.js", string, function (err) {
if (err) {
return console.log(err);
}
console.log("Assets file was updated!");
});
}
start();