Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/npm/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
File 使用npm将文件列表写入js文件_File_Npm_Cross Platform_Command Line Interface - Fatal编程技术网

File 使用npm将文件列表写入js文件

File 使用npm将文件列表写入js文件,file,npm,cross-platform,command-line-interface,File,Npm,Cross Platform,Command Line Interface,我想为npm编写一个脚本,该脚本执行以下操作: 获取文件夹(及其子文件夹)中的文件列表 将其写入JS文件,格式如下: module.exports = [ "folder/filename.png", "folder/subfolder/filename.png" ]; 我目前正在使用Linux中的cli这样做: echo 'module.exports = [' | tee files.js && find . -name "*png" | sed s:"./"

我想为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包?我有点迷路了。

我不觉得自己很傻。从未直接使用过node,但编写脚本来实现这一点并不重要

#!/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();
#/usr/bin/env节点
var fs=需要('fs');
var列表=[];
函数遍历(文件夹){
var files=fs.readdirSync(文件夹);
对于(var i=0;i-1 | |文件[i].indexOf('.jpg')>-1){
list.push(文件夹+“/”+文件[i]);
log(i+文件夹+“/”+文件[i]);
}否则{
var path=文件夹+“/”+文件[i];
if(fs.lstatSync(path.isDirectory()){
导线(路径);
}
}
}
}
函数start(){
遍历('./图像');
var string=“module.exports=[\n”;
对于(变量i=0;i