From de01c210904365623c31d65f0ba4c309b0170288 Mon Sep 17 00:00:00 2001 From: Stephan Badragan Date: Wed, 18 Oct 2017 00:49:34 +0100 Subject: [PATCH 1/2] adding docs for new `output.devtoolNamespace` option and [namespace] placeholder --- src/content/configuration/output.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/content/configuration/output.md b/src/content/configuration/output.md index 1534009d8a06..e5e798767004 100644 --- a/src/content/configuration/output.md +++ b/src/content/configuration/output.md @@ -9,6 +9,7 @@ contributors: - irth - fvgs - dhurlburtusa + - MagicDuck --- The top-level `output` key contains set of options instructing webpack on how and where it should output your bundles, assets and anything else you bundle or load with webpack. @@ -128,7 +129,7 @@ This option is only used when [`devtool`](/configuration/devtool) uses an option Customize the names used in each source map's `sources` array. This can be done by passing a template string or function. For example, when using `devtool: 'eval'`, this is the default: ``` js -devtoolModuleFilenameTemplate: "webpack:///[resource-path]?[loaders]" +devtoolModuleFilenameTemplate: "webpack://[namespace]/[resource-path]?[loaders]" ``` The following substitutions are available in template strings (via webpack's internal [`ModuleFilenameHelpers`](https://github.com/webpack/webpack/blob/master/lib/ModuleFilenameHelpers.js)): @@ -142,6 +143,7 @@ The following substitutions are available in template strings (via webpack's int | [loaders] | Explicit loaders and params up to the name of the first loader | | [resource] | The path used to resolve the file and any query params used on the first loader | | [resource-path] | The path used to resolve the file without any query params | +| [namespace] | The modules namespace. This is usually the library name when building as a library, empty otherwise | When using a function, the same options are available camel-cased via the `info` parameter: @@ -153,6 +155,12 @@ devtoolModuleFilenameTemplate: info => { If multiple modules would result in the same name, [`output.devtoolFallbackModuleFilenameTemplate`](#output-devtoolfallbackmodulefilenametemplate) is used instead for these modules. +## `output.devtoolNamespace` + +`string` + +This option determines the modules namespace used with the [`output.devtoolModuleFilenameTemplate`](#output-devtoolmodulefilenametemplate). When not specified, it will default to the value of: [`output.library`](#output-library). It's use is to prevent source file path collisions in sourcemaps when loading multiple libraries built with webpack. +For example, if you have 2 libraries, with namespaces `library1` and `library2`, which both have a file `./src/index.js` (with potentially different contents), they will expose these files as `webpack://library1/./src/index.js` and `webpack://library2/./src/index.js`. ## `output.filename` From 96dd6dd2d8a647ac01fe272f6e6bd98d0c75ebaf Mon Sep 17 00:00:00 2001 From: Stephan Badragan Date: Fri, 20 Oct 2017 20:47:06 +0100 Subject: [PATCH 2/2] adding extra lines as indicated --- src/content/configuration/output.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/content/configuration/output.md b/src/content/configuration/output.md index e5e798767004..dbef8b940cdf 100644 --- a/src/content/configuration/output.md +++ b/src/content/configuration/output.md @@ -155,13 +155,16 @@ devtoolModuleFilenameTemplate: info => { If multiple modules would result in the same name, [`output.devtoolFallbackModuleFilenameTemplate`](#output-devtoolfallbackmodulefilenametemplate) is used instead for these modules. + ## `output.devtoolNamespace` `string` This option determines the modules namespace used with the [`output.devtoolModuleFilenameTemplate`](#output-devtoolmodulefilenametemplate). When not specified, it will default to the value of: [`output.library`](#output-library). It's use is to prevent source file path collisions in sourcemaps when loading multiple libraries built with webpack. + For example, if you have 2 libraries, with namespaces `library1` and `library2`, which both have a file `./src/index.js` (with potentially different contents), they will expose these files as `webpack://library1/./src/index.js` and `webpack://library2/./src/index.js`. + ## `output.filename` `string`