2017-08-07 5 views
0

Ich habe eine App in vue.js mit vuex, die einige Module implementieren, was ich mache Objekte verketten, um einige Aktionen, Getters, Mutationen zu bekommen. So:Concat Objekt-Array mit dem gleichen Namen

const files = require.context('../../renderer/', true, /\?*.actions.js|.\?*.getters.js|.\?*.mutations.js$/); 
const modulesSrc = {}; 

files.keys().forEach((key) => { 
    modulesSrc[key.replace(/(\.*\/|\.js)/g, '')] = files(key).default; 
}); 

export default modulesSrc; 

Was ich erhalte, ist es:

enter image description here


Wenn ich versuche, die Regex zu ändern, indem man nur den Namen des Ordners zu arbeiten, geht es wie dies:

const files = require.context('../../renderer/', true, /\?*.actions.js|.\?*.getters.js|.\?*.mutations.js$/); 
const modulesSrc = {}; 

files.keys().forEach((key) => { 
    modulesSrc[key.replace(/(\.*\/|\.js|actions?|getters?|mutations)/g, '')] = files(key).default; 
}); 

export default modulesSrc; 

enter image description here

Aber innerhalb des Elements, es wird nur die letzte Datei, und nicht mit den anderen concat.


Ich mag diese Highlight-Objekte (erste reguläre Ausdrücke) erhalten:

enter image description here

Innerhalb dieser Ausgabe (letzten regulären Ausdrücke):

enter image description here

Was kann ich tun ?

Danke!

Antwort

0

Mein Vorschlag ist einfacher und erfordert nicht den zusätzlichen Aufwand von regex:

const key = '/home/folder/something/mutations.js' 
 
const filename = key.substring(key.lastIndexOf('/') + 1, key.lastIndexOf('.')) 
 
console.log(filename)

+0

ich den Namen des Ordners benötigen ein Modul für vuex zu schaffen, obwohl, mit Ihrem Code , Wenn ich mehr als eine Mutation habe, werde ich die letzte verwerfen. –

Verwandte Themen