【问题标题】:Webpack use existing source map from previous build stepWebpack 使用上一个构建步骤中的现有源映射
【发布时间】:2023-03-17 19:38:01
【问题描述】:

我的编辑器将.ts 文件编译为.js.js.map 文件,并使用webpack 捆绑.js 文件。 (我不希望 webpack 负责编译 .ts,因为这样错误就不会在编辑器中正确显示。)

如果我将编译后的 .js 文件提供给 webpack,它不会拾取现有的 .js.map 文件(通过每个文件中的 //# sourceMappingURL=...),因此生成的 bundle.js.map 指向 .js 文件,但不是原始的.ts 文件。

如何让 webpack 保留现有的 .js.map 文件,以便生成的 bundle.js.map 直接指向原始的 .ts 文件?

【问题讨论】:

    标签: typescript webpack source-maps


    【解决方案1】:

    我不希望 webpack 负责编译 .ts,因为这样错误就不会在编辑器中正确显示

    他们会,这取决于你的编辑。例如。 atom-typescript 有一个选项可以让你禁用 compileOnSave https://github.com/TypeStrong/atom-typescript/blob/master/docs/tsconfig.md#compileonsave 但它仍然会显示错误。

    然后你也可以配置webpack 例如https://github.com/TypeStrong/ts-loader#options 也会给你编译器错误。

    如何让 webpack 保留现有的 .js.map 文件,以便生成的 bundle.js.map 直接指向原始 .ts 文件

    最简单的方法是让加载器为您执行此操作,ts-loader 会这样做?

    【讨论】:

    • 感谢您的回复。有问题的编辑器是 PhpStorm/WebStorm,我认为它必须编译 .ts 才能得到错误。我希望它编译 .ts 的第二个原因是,.js 文件位于文件系统上,可以被 Node.js 脚本包含。
    【解决方案2】:

    事实证明,一个名为 source-map-loader 的额外 webpack “preLoader”可以解决问题:

    $ npm install source-map-loader --save
    

    然后在webpack.config.js:

    module.exports = {
      devtool: 'source-map',
      module:  {
        preLoaders: [
          {
            test:   /\.js$/,
            loader: 'source-map-loader'
          }
        ]
      }
    };
    

    更新适用于 Webpack 2+

    module.exports = {
      devtool: 'source-map',
      module: {
        rules: [
          {
            test: /\.js$/,
            use: ["source-map-loader"],
            enforce: "pre"
          }
        ]
      }
    };
    

    【讨论】:

    • 我面临着完全相同的问题,但即使我使用了您的成功配置并安装了 source-map-loader,我也收到警告说我可能需要一个“.js.js 的“适当的加载器”。 map" 文件,见这里:stackoverflow.com/q/42717935/1731095 你能发布你的完整配置和你的 package.json 吗?那会很有帮助!
    • @kraftwer1 我不能,因为它们位于专有代码库中,但我看不到它们中的任何东西,这也是它工作所必需的。如果有帮助,我正在使用 Webpack 1.14 和 source-map-loader 0.1.6。
    • 非常感谢。我尝试使用与您完全相同的版本。不幸的是,它仍然拒绝“.map.js”文件。不知道为什么...
    • 感谢上帝,我不必将 TypeScript 编译移到我的捆绑构建步骤中!是时候测试一下了
    • preLoaders 现已更改为 rules: stackoverflow.com/questions/40653936/…
    猜你喜欢
    • 1970-01-01
    • 2019-11-05
    • 1970-01-01
    • 2015-11-05
    • 1970-01-01
    • 2016-11-17
    • 2019-06-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多