построить с пространствами имен, используя веб-пакет - PullRequest
0 голосов
/ 18 октября 2019

Попытка обдумать, как указать сборку в конфигурации или код для нескольких файлов 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?
};

По сути, я пытаюсь

  1. объединить все источники в пространствах имен и подпространствах при создании минифицированногои не минимизированные источники.

  2. согласовать все тесты (только без минифайдов)


Идея

МойДругая идея для решения вышеуказанной проблемы - использование кода, например, я создаю файл 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; // ?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...