सभी योग्यता @ धन्यवाद (धन्यवाद) के लिए।
लेकिन यहां मेरा अपना व्युत्पन्न संस्करण है।
लाभ:
- किसी
{module_name: exports_obj}
वस्तु के तहत क्या मॉड्यूल निर्यात इकट्ठा किया जाता है ।
- मॉड्यूल_नाम इसके फ़ाइल नाम से बनाया गया है।
- ... बिना विस्तार और स्लैश की जगह अंडरस्कोर (उपनिर्देशन स्कैनिंग के मामले में)।
- अनुकूलन को आसान बनाने के लिए टिप्पणियाँ जोड़ी गईं।
- यानी आप चाहें तो उपनिर्देशिकाओं में फ़ाइलों को शामिल नहीं कर सकते हैं, अगर कहते हैं, तो वे रूट स्तर मॉड्यूल के लिए मैन्युअल रूप से आवश्यक हैं ।
संपादित करें: यदि मेरी तरह, आपको यकीन है कि आपके मॉड्यूल (जावास्क्रिप्ट स्तर पर) एक नियमित जावास्क्रिप्ट ऑब्जेक्ट के अलावा और कुछ नहीं लौटाएंगे, तो आप उन्हें उनकी मूल निर्देशिका संरचना की नकल करते हुए "माउंट" भी कर सकते हैं (देखें कोड (डीप संस्करण) ) अंत में अनुभाग)।
कोड (मूल संस्करण):
function requireAll(r) {
return Object.fromEntries(
r.keys().map(function(mpath, ...args) {
const result = r(mpath, ...args);
const name = mpath
.replace(/(?:^[.\/]*\/|\.[^.]+$)/g, '') // Trim
.replace(/\//g, '_') // Relace '/'s by '_'s
;
return [name, result];
})
);
};
const allModules = requireAll(require.context(
// Any kind of variables cannot be used here
'@models' // (Webpack based) path
, true // Use subdirectories
, /\.js$/ // File name pattern
));
उदाहरण:
अंतिम के लिए नमूना उत्पादन console.log(allModules);
:
{
main: { title: 'Webpack Express Playground' },
views_home: {
greeting: 'Welcome to Something!!',
title: 'Webpack Express Playground'
}
}
निर्देशिका पेड़:
models
├── main.js
└── views
└── home.js
कोड (डीप संस्करण):
function jsonSet(target, path, value) {
let current = target;
path = [...path]; // Detach
const item = path.pop();
path.forEach(function(key) {
(current[key] || (current[key] = {}));
current = current[key];
});
current[item] = value;
return target;
};
function requireAll(r) {
const gather = {};
r.keys().forEach(function(mpath, ...args) {
const result = r(mpath, ...args);
const path = mpath
.replace(/(?:^[.\/]*\/|\.[^.]+$)/g, '') // Trim
.split('/')
;
jsonSet(gather, path, result);
});
return gather;
};
const models = requireAll(require.context(
// Any kind of variables cannot be used here
'@models' // (Webpack based) path
, true // Use subdirectories
, /\.js$/ // File name pattern
));
उदाहरण:
इस संस्करण का उपयोग करके पिछले उदाहरण का परिणाम:
{
main: { title: 'Webpack Express Playground' },
views: {
home: {
greeting: 'Welcome to Something!!',
title: 'Webpack Express Playground'
}
}
}
image-size-loader
सही पहलू अनुपात वाले प्लेसहोल्डर्स बनाने के लिए सभी छवियों के लिए उपयोग करना चाहता हूं ।