Подтвердить что ты не робот

Typescript 2.0 и Webpack импорт HTML как строки

Я пытаюсь импортировать HTML файл в виде строки с помощью webpack (в настоящее время используется webpack, потому что TypeScript 2.0 не поддерживает async/await для целей без ES6).

Проблема у меня есть, даже если версия html-loader из github поддерживает флаг конфигурации 'exportAsEs6Default', я не заставляю его правильно устанавливать. Есть ли способ установить параметры загрузчика по всему миру? Поскольку, если я добавлю html-загрузчик в раздел загрузчиков в файле конфигурации, загрузчик вызывается дважды, в результате чего содержимое будет вложенным.


У меня есть следующий файл определения для поддержки импорта HTML (например, в документации модулей)

declare module "html!*" {
    const content: string;
    export default content;
}

Заявление об утверждении импорта:

import templateString from "html!./Hello.html";

Версии пакетов, которые я использую:

"babel-core": "^6.17.0",
"babel-loader": "^6.2.5",
"babel-preset-es2015": "^6.16.0",
"html-loader": "git://github.com/webpack/html-loader.git#4633a1c00c86b78d119b7862c71b17dbf68d49de",
"ts-loader": "^0.9.5",
"typescript": "2.0.3",
"webpack": "^1.13.2"

И файл конфигурации webpack

"use strict";

module.exports = {
    entry: "./WebApp/Hello.ts",
    output: {
        path: "./wwwroot/compiled",
        filename: "app.bundle.js"
    },
    resolve: {
        extensions: ["", ".webpack.js", ".web.js", ".js", ".ts"]
    },
    module: {
        loaders: [
            {
                test: /\.ts$/,
                exclude: /node_modules/,
                loader: "babel-loader!ts-loader"
            },
            {
                test: /\.js$/,
                exclude: /node_modules/,
                loader: "babel-loader"
            }
        ]
    }
};
4b9b3361

Ответ 1

Итак, после некоторого мастерства я нашел способ сделать это. Поскольку я не хотел добавлять параметр запроса exportAsEs6Default для каждого оператора импорта, я изменил его с явного загрузчика для html на сконфигурированный загрузчик.

Я оставлю этот вопрос открытым, если кто-то знает лучший способ, так как в настоящее время я не уверен, что я все доволен этим способом (что-то, родное для typescript, будет найдено без необходимости загрузчик), но, возможно, это поможет другим, столкнувшимся с одной и той же проблемой.


Итак, инструкция import из приведенного выше примера изменилась на

import templateString from "./Hello.html";

Вместе с обновленным файлом определения

declare module "*.html" {
    const content: string;
    export default content;
}

И файл конфигурации webpack изменился на это:

"use strict";

module.exports = {
    entry: "./WebApp/Hello.ts",
    output: {
        path: "./wwwroot/compiled",
        filename: "app.bundle.js"
    },
    resolve: {
        extensions: ["", ".webpack.js", ".web.js", ".js", ".ts", ".html"]
    },
    module: {
        loaders: [
            {
                test: /\.ts$/,
                exclude: /node_modules/,
                loader: "babel-loader!ts-loader"
            },
            {
                test: /\.js$/,
                exclude: /node_modules/,
                loader: "babel-loader"
            },
            {
                test: /\.html$/,
                exclude: /node_modules/,
                loader: "html-loader?exportAsEs6Default"
            }
        ]
    }
};

Нет изменений в используемых пакетах.