Как настроить абсолютный импорт с помощью bazel/webpack?

Я хочу импортировать модуль машинописного текста из одной части моего репо в другую, не имея кучу "../.." в моем импорте, чтобы вернуться в корневую папку моей рабочей области bazel. Как я могу настроить абсолютный импорт (относительно моей рабочей области) для веб-пакета? Нужно ли мне что-то устанавливать в webpack.config.js? Если так, то?

Минимальная настройка, чтобы проиллюстрировать проблему ниже:

Структура папки

folder1/
    moduleA.ts
    BUILD
folder2/
    moduleB.ts
    BUILD
WORKSPACE

РАБОЧЕЕ ПРОСТРАНСТВО

workspace(
    name = "myworkspace",
)

...

* **moduleA.ts ***

// TS COMPILER CAN FIND THIS BUT WEBPACK CAN'T FIND THIS
import { thing } from "myworkspace/folder2/moduleB";  

...

folder1 / СТРОИТЬ

load("@npm_bazel_typescript//:index.bzl", "ts_library")
load("@npm//webpack-cli:index.bzl", webpack = "webpack_cli")

ts_library(
    name = "moduleA",
    srcs = ["moduleA.ts"],
    deps = [
        "//folder2:moduleB",
    ],
)

filegroup(
    name = "moduleA.js",
    srcs = [
        "moduleA",
    ],
    output_group = "es6_sources",
    visibility = ["//visibility:public"],
)

webpack(
    name = "bundle",
    outs = ["app.bundle.js"],
    args = [
        "$(locations :moduleA.js)",
        "--config",
        "$(execpath //:webpack.config.js)",
        "-o",
        "$@",
    ],
    data = [
        ":moduleA.js",
        "//:webpack.config.js",
        "@npm//:node_modules",
    ],
    visibility = ["//visibility:public"],
)

0 ответов

Решено здесь.

Оказывается, проблема в том, что файловая группа не делает вывод из moduleA, что //folder2:moduleB нужно включить транзитивно. Добавление //folder2:moduleB в srcs файловой группы устранило мою проблему.

Другие вопросы по тегам