将所有文件从目录和映射文件名导入数组中



我当前使用Vue和WebPack设置此设置:

const imports = {
  foo: require('./folder/foo.yml'),
  bar: require('./folder/bar.yml')
}

有没有一种方法可以动态地使用此结构添加更多的键 值,其中键等于没有文件扩展名的文件名?

请查看是否有帮助。

const testFolder = './tests/';
const fs = require('fs');
const imports = {}
fs.readdirSync(testFolder).forEach(file => {
    const filekey = file.split('.').slice(0, -1).join('.');
    imports[filekey] = require('./tests/' + file);
  });

您可以使用Array#reduce构建这样的对象,示例:

var require = n => n;
var imports = ['foo', 'bar', 'baz', 'bat'].reduce((acc, val) => {
  acc[val] = require(`./folder/${val}`);
 return acc;
}, {})
console.log(imports);

数组中的值可能来自fs.readdirSync之类的东西,因此我们将有:

const ymlFiles = fs.readdirSync('./folder')
  .filter(filename => filename.split('.').reverse()[0] === 'yml');
const ymlFilesNoExt = ymlFiles.map(filename => filename.replace(/.yml$/, ""))
const imports = ymlFilesNoExtvar require = n => n;
var imports = ['foo', 'bar', 'baz', 'bat'].reduce((acc, val) => {
  acc[val] = require(`./folder/${val}`);
 return acc;
}, {});

相关内容

最新更新