Изменить контекст относительного пути исходной карты веб-пакета - PullRequest
0 голосов
/ 26 апреля 2020

У меня есть монорепозиторий NodeJS проект, написанный на машинописном шрифте и компиляторе через webpack, ts-loader и tsconfigpaths, однако сгенерированные исходные карты не могут использоваться для VSCode.

Когда компилятор машинописного текста генерирует исходные карты, он ссылается на местоположение относительно исходного файла относительно каталога out:

dist / main. js .map

source: ["../src/main.ts"]

Однако когда webpack компилирует исходные карты, он относится к каталогу tsconfig. (обратите внимание на разницу: ./ против ../)

dist / main. js .map

source: ["./src/main.ts"]

Я нашел способ решить эту проблему, но это не так. Я также изменил путь контекста веб-пакета к папке с исходными данными и поставил перед файлами ввода префикс ../.

  entry: "../src/main.ts",
  context: path.resolve(__dirname, "dist"),

Ниже приведен файл конфигурации веб-пакета, который я сейчас использую и который генерирует неправильные исходные карты. Я ожидал, что SourceMapDevToolPlugin будет содержать некоторые свойства, такие как «контекст». Он содержит свойство fileContext, но, похоже, не влияет ни на что выводимое.

{
  mode: "development",
  target: "node",
  entry: "./src/main.ts",
  output: {
    filename: "main.js",
    path: path.resolve(__dirname, "dist"),
  },
  externals: [nodeExternals()],
  module: {
    rules: [
      {
        test: /\.ts$/,
        exclude: /node_modules/,
        loader: "ts-loader",
      },
    ],
  },
  resolve: {
    extensions: [".js", ".ts"],
    plugins: [new TsconfigPathsPlugin()],
  },
  devtool: false,
  plugins: [
    new webpack.SourceMapDevToolPlugin({
      filename: "[name].js.map",
      moduleFilenameTemplate: "[resource-path]",
      noSources: true,
      module: true,
    }),
  ],
}
...