Попытка обдумать, как указать сборку в конфигурации или код для нескольких файлов JS, чтобы они автоматически помещались в свои собственные пространства имен и, наконец, все они в одном главном пространстве имен. То же самое для их тестов.
скажем, корневое пространство имен будет library
, Вот моя структура папок.
John.js
export default class John {
constructor(name, email) {
this.name = name;
this.email = email;
}
getName() {
return this.proxyName;
}
getEmail() {
return this.email;
}
}
Источники (Concat all плюс не минимизированная версия)
src/customers/John.js
src/customers/Jane.js
src/products/Product1.js
src/products/Product2.js
Тесты
test/customers/JohnTest.js
test/customers/JaneTest.js
test/products/Product1Test.js
test/products/Product2Test.js
test / all.js (все составные и без минифайдов)
console.log(library != null)
console.log(library.customers != null)
console.log(library.customers.John != null)
console.log(library.customers.Jane != null)
console.log(library.products.Product1 != null)
console.log(library.products.Product2 != null)
// above all should return true.
webpack.config
let path = require("path");
module.exports = {
entry: ["src/customers/John.js",
"src/customers/Jane.js",
"src/products/Product1.js",
"src/products/Product2.js"
],
output: {
path: path.resolve(__dirname, "dist"),
filename: "library.js"
},
test: {} // test build config?
};
По сути, я пытаюсь
объединить все источники в пространствах имен и подпространствах при создании минифицированногои не минимизированные источники.
согласовать все тесты (только без минифайдов)
Идея
МойДругая идея для решения вышеуказанной проблемы - использование кода, например, я создаю файл src/index.js
и просто компилирую entry: "./src/index.js"
в веб-пакете.
import John from "./customers/John.js";
import Jane from "./customers.Jane.js";
const library = {
customers: [John, Jane]
};
module.exports = library; // ?