簡體   English   中英

從目錄導入所有文件並將文件名映射到數組中

[英]Import all files from directory and map file name into array

我目前使用 Vue 和 Webpack 進行了此設置:

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

有沒有辦法用這個結構動態添加更多的鍵+值,其中鍵等於沒有文件擴展名的文件名?

您可以使用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;
}, {});

請看看這是否有幫助。

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);
  });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM