标签: source-maps

仅为某些块生成源映射

我正在使用 webpack 构建我的应用程序。我生成 3 个包:app.js、vendor.js 和 manifest.js。由于我已将 UglifyJsPlugin 添加到我的 conf 中,因此还生成了 3 个源映射。

我只想为我的 app.js 包生成一个源映射,因为其他 2 个对我来说没有用。有没有办法告诉 uglifier 只为我想要的块生成源映射,而不是全部?

这是我目前拥有的:

                               Asset       Size  Chunks                    Chunk Names
         app.1e1d20f5f417ed9df40d.js     901 kB    1, 2  [emitted]  [big]  app
     app.1e1d20f5f417ed9df40d.js.map    4.24 MB    1, 2  [emitted]         app
    manifest.05867db2f94981c04486.js    1.43 kB       2  [emitted]         manifest
manifest.05867db2f94981c04486.js.map    14.1 kB       2  [emitted]         manifest
     styles.1e1d20f5f417ed9df40d.css    42.3 kB    1, 2  [emitted]         app
 styles.1e1d20f5f417ed9df40d.css.map  108 bytes    1, 2  [emitted]         app
      vendor.2734c5cd65804c943c80.js    1.64 MB    0, 2  [emitted]  [big]  vendor
  vendor.2734c5cd65804c943c80.js.map    11.9 MB    0, 2 …
Run Code Online (Sandbox Code Playgroud)

chunks source-maps webpack

5
推荐指数
1
解决办法
3140
查看次数

可以src吗?TSC?卷起 ?“源映射”指向原始 TypeScript src?

我正在使用 TypeScript 和 Rollup 的组合,如本文中所示。

因此math.ts

export function square(x: number) {
    return x ** 2;
}

export function cube(x: number) {
    return x ** 3;
}
Run Code Online (Sandbox Code Playgroud)

main.ts

import { square } from "./math";

console.log(square(3));
Run Code Online (Sandbox Code Playgroud)

命令后生成

tsc -t ES5 -m es2015 && rollup -f es -o app.js -m -i main.js
Run Code Online (Sandbox Code Playgroud)

文件app.js

function square(x) {
    return Math.pow(x, 2);
}

console.log(square(3));
//# sourceMappingURL=app.js.map
Run Code Online (Sandbox Code Playgroud)

但生成的源映射指向 的.js输出tsc,而不是原始.ts文件。我怎样才能得到后者?

source-maps typescript tsc rollupjs

5
推荐指数
1
解决办法
1633
查看次数

为什么 Chrome 以这种方式显示 sourceMappingURL 相对路径?

给定带有相对路径的 sourceMappingURL 注释//# sourceMappingURL=dep.js.map,我理解这意味着路径是 相对于当前文件的。但是,当我在同一目录中创建一个包含缩小源文件及其源映射的项目时,Chrome 会像这样显示它们:

chrome 开发工具在重复的子目录下显示源映射

即使 dep.js 源映射位于额外的子目录下,Chrome 仍然会向我显示源映射的内容。当我右键单击 dep.js 并在新选项卡中打开时,新选项卡中的 URL 无效 - 它包含上述额外的子目录(/scripts/dep/scripts/dep/dep.js 而不是 /scripts/dep/ dep.js)。

sourceMappingURL应该是什么?

source-maps

5
推荐指数
0
解决办法
632
查看次数

如何在已编译的包中包含 NPM 依赖项的源映射?

假设我有一个使用 Babel 和 Webpack 编译成捆绑包的前端应用程序,其中包含我拥有的代码的源映射。但是,如果我正在寻找与第三方依赖项相关的问题,我只会在浏览器调试器中看到它们的缩小代码,因为这是从 NPM 下载并在磁盘上可用的代码。我只能自动重新格式化这段代码,但永远看不到原来编写的代码。

除了我的代码的源映射之外,是否有任何方法可以配置开发环境以提供依赖项代码的源映射?

source-maps webpack babeljs

5
推荐指数
1
解决办法
3454
查看次数

如何让源地图适用于 npm 链接的角度库

我创建了 Angular 7 库,并ng g library @my-org/some-lib在单独的 Angular 应用程序中使用它,以便npm link能够开发应用程序和库。

现在我发现,在开发工具中,我将该库视为my-org-some-lib从 解析的单独捆绑js文件vendor.js.map,但它没有进一步解析到sourceMappingURL=my-org-some-lib.js.map存在于 中的文件my-org-some-lib.js,并且映射文件实际上是在构建的库中生成的。

source-maps angular

5
推荐指数
1
解决办法
2648
查看次数

webpack 使用什么方法在开发工具中显示“webpack://”文件夹中的源代码?

如果我在开发模式下使用 webpack,当我打开 chrome 开发工具时,在“源”选项卡中,我可以看到一个包含所有源代码的“webpack://”文件夹。

在此输入图像描述

我想知道如何用我自己的代码(没有 webpack)做类似的事情。

假设我想编写自己的构建系统。该构建系统需要一些源代码,然后对其进行转译。如何在特殊文件夹(例如“mysource://”)中显示原始源代码(包括js、html和css文件)?

javascript build source-maps webpack

5
推荐指数
1
解决办法
2663
查看次数

Chrome Devtools 中没有链接到 React 组件的源代码

我使用create-react-app 16 。["react": "^16.8.4", "react-scripts": "^2.1.8"] \n我阅读了Ben Schwarz使用Chrome 开发工具分析 React 性能的博客:\n https://building.calibreapp.com/debugging-react-performance-with-react-16-and-chrome-devtools-c90698a522ad \n他建议使用source-maps导出你的 JS 。\n当他进行表演时跟踪,然后单击“用户计时”部分中的给定反应组件,特定组件信息显示在“自下而上”部分中,并在右侧带有**指向源代码**的蓝色链接。当我单击 React 组件时,此链接不会显示。当我单击“评估脚本”等组件时,右侧会显示蓝色链接。

\n\n

源映射不应该在开发中与create-react-app 16一起“开箱即用”吗?\n我只想在开发中使用Chrome 开发工具进行源映射。源映射在 Chrome 浏览器中激活。我错过了什么?\n提前谢谢

\n\n

PS:由于我还没有获得 10 点声望点,所以我\xc2\xb4m 不打算使用屏幕截图,这在这种情况下让事情变得不太容易。不过,我希望我能够充分解释我的问题。

\n

performance-testing google-chrome-devtools source-maps reactjs create-react-app

5
推荐指数
1
解决办法
5539
查看次数

带有 sourcemap 的 Webpack 无法解析生产模式下的变量

我想使用 Webpack 为我们的生产构建生成源映射。我设法生成它,但是当我在调试器中的断点处停止时,变量未解析:

在此输入图像描述

我究竟做错了什么?如何生成一个源映射,让 chrome devtools 在我停止在调试器中的断点处时解析变量?

这些是我的 webpack 配置:

webpack.config.js:

const path = require('path');
const ROOT = path.resolve( __dirname, 'src/main/resources/packedbundle' );

const HtmlWebpackPlugin = require('html-webpack-plugin');
const LoaderOptionsPlugin = require('webpack/lib/LoaderOptionsPlugin');
const ExtractTextPlugin = require("extract-text-webpack-plugin");

module.exports = {
context: ROOT,

resolve: {
    extensions: ['.ts', '.js']
},

module: {
    rules: [
        {
            test: /\.ts$/,
            exclude: /node_modules/,
            use: [
                {
                    loader: 'eslint-loader',
                    options: {
                        failOnError: true,
                        quiet: true
                    }
                }
            ],
            enforce: 'pre'
        },

        {
            test: /\.ts$/,
            exclude: [ /node_modules/ ],
            use: …
Run Code Online (Sandbox Code Playgroud)

javascript source-maps webpack webpack-4

5
推荐指数
1
解决办法
1906
查看次数

某些 .vue(和 .ts)文件的 Webpack 源映射不再包含原始代码 (sourcesContent)

编辑 [2019年7月23日]

经过进一步研究,我发现并非所有 .vue 文件都有这个问题。有些仍然显示原始源代码。看起来使用的加载器之一可能是问题的罪魁祸首(“vue-loader”作为我的第一个“目标”)。

在显示源代码的文件中,源映射文件的相关部分如下所示:

在此输入图像描述

而没有源代码的文件中源映射的相同部分如下所示:

在此输入图像描述

因此,由于某种原因,后一种类型的文件似乎缺少 vue-loader 的“和谐默认导出”。

上一期文本

几天后,我的 .vue 文件的源映射不再包含原始代码 (sourcesContent)。Webpack 生成了许多源映射文件,但它们都不包含实际代码:只有缩小或以其他方式“压缩”的代码版本,这些版本不太可用。它们看起来像这样: 在此输入图像描述 在此输入图像描述 在此输入图像描述 在此输入图像描述

我的项目中的 Typescript (.ts) 文件看起来几乎正确,但仍然包含一些细微的修改,例如:

在此输入图像描述

我尝试过的: - 我搜索了 Stackoverflow,发现了许多类似的问题(例如WebPack sourcemaps 混淆(重复的文件))以及可能的修复,但没有一个解决了我的问题;- 我将最新的(Webpack)更改与大约一周(和两周)前的更改进行了比较,当时一切正常。我还将它与一个非常相似的项目进行了比较,该项目仍然生成正确的源映射,包括 .vue 文件。- 我已经尝试了 Webpack 配置中“devtool”设置的各种设置,但没有任何帮助。- 我没有使用 Uglify(当人们对源映射有问题时会经常提到 Uglify),所以这不可能是问题;- 我尝试更新一些与构建相关的包,以便它们与仍然正常工作的项目的包相同,但问题仍然存在。- 我检查了不同的浏览器,但 Chrome 和 Firefox 中都出现了问题(并且我检查了它们的源映射设置是否设置为“打开”,因为其他项目正在使用相同的设置,所以它们必须如此)。我什至尝试过 IE11,但这也没有帮助。

我在 package.json 中的启动脚本如下所示:

 "build-watch": "webpack -d --watch true --config webpack.dev.config.js",
 "build-release": "webpack -p --config webpack.production.config.js",
 "build-dev": "webpack -d --config webpack.dev.config.js",
Run Code Online (Sandbox Code Playgroud)

devDependency 看起来像这样:

"devDependencies": {
    "@babel/core": "^7.5.5",
    "@babel/plugin-proposal-class-properties": "^7.5.5",
    "@babel/plugin-proposal-object-rest-spread": "^7.5.5",
    "@babel/preset-env": "^7.5.5",
    "@babel/preset-typescript": "^7.3.3", …
Run Code Online (Sandbox Code Playgroud)

source-maps webpack vue.js

5
推荐指数
1
解决办法
3696
查看次数

如何在我的项目中使用 Chrome 调试 Angular *ngIf 结构指令?

我想将 Angular 源代码/源映射附加到我生成的 Angular CLI 项目中,以便我可以像*ngIf在 Chrome 中一样调试指令。

是否可以以某种方式将调试器附加到ng_if.ts使用某些 angular.json 配置/源映射...?或者是否有一个设置可以在开发模式下添加源映射,以便我可以单步执行任何带有源映射的第三方库?

在此输入图像描述

如果我在Chrome中按Ctrl+O然后输入,ngIf或者ng_if列表菜单中没有这样的文件。

在此输入图像描述

编辑:提供供应商源映射时的样子(请参阅接受的答案):

在此输入图像描述

debugging webstorm source-maps angular

5
推荐指数
1
解决办法
4378
查看次数