如何使用bazel / webpack设置绝对导入?

卫斯理

我想从我的仓库的另一部分导入一个打字稿模块,而在导入中没有很多“ ../ ..”以回到我的bazel工作区的根文件夹。如何为webpack设置绝对导入(相对于我的工作区)?我需要在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";  

...

文件夹1 / BUILD

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",
        "[email protected]",
    ],
    data = [
        ":moduleA.js",
        "//:webpack.config.js",
        "@npm//:node_modules",
    ],
    visibility = ["//visibility:public"],
)
卫斯理

在这里解决

事实证明,问题在于文件组没有从moduleA推断// folder2:moduleB需要传递地包含在内。将// folder2:moduleB添加到文件组srcs修复了我的问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章