加入收藏 | 设为首页 | 会员中心 | 我要投稿 汽车网 (https://www.0577qiche.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

WebPack Output 输出

发布时间:2023-05-09 13:21:14 所属栏目:教程 来源:
导读:output 位于对象最顶级键(key),包括了一组选项,指示 webpack 如何去输出、以及在哪里输出你的「bundle、asset 和其他你所打包或使用 webpack 载入的任何内容」。

output.auxiliaryComment
string object

output 位于对象最顶级键(key),包括了一组选项,指示 webpack 如何去输出、以及在哪里输出你的「bundle、asset 和其他你所打包或使用 webpack 载入的任何内容」。

output.auxiliaryComment
string object

在和 output.library 和 output.libraryTarget 一起使用时,此选项允许用户向导出容器(export wrapper)中插入注释。要为 libraryTarget 每种类型都插入相同的注释,将 auxiliaryComment 设置为一个字符串:

output: {
  library: "someLibName",
  libraryTarget: "umd",
  filename: "someLibName.js",
  auxiliaryComment: "Test Comment"
  }
将会生成如下:

(function webpackUniversalModuleDeFinition(root, factory) {
  // Test Comment
  if(typeof exports === 'object' && typeof module === 'object')
    module.exports = factory(require("lodash"));
  // Test Comment
  else if(typeof define === 'function' && define.amd)
    define(["lodash"], factory);
  // Test Comment
  else if(typeof exports === 'object')
    exports["someLibName"] = factory(require("lodash"));
  // Test Comment
  else
    root["someLibName"] = factory(root["_"]);})(this, function(__WEBPACK_EXTERNAL_MODULE_1__) {
  // ...});
对于 libraryTarget 每种类型的注释进行更细粒度地控制,请传入一个对象:

auxiliaryComment: {
  root: "Root Comment",
  commonjs: "Commonjs Comment",
  commonjs2: "Commonjs2 Comment",
  amd: "AMD Comment"
  }
output.chunkFilename
string function

此选项决定了非入口(non-entry) chunk 文件的名称。有关可取的值的详细信息,请查看 output.filename 选项。

注意,这些文件名需要在 runtime 根据 chunk 发送的请求去生成。因此,需要在 webpack runtime 输出 bundle 值时,将 chunk id 的值对应映射到占位符(如 [name] 和 [chunkhash])。这会增加文件大小,并且在任何 chunk 的占位符值修改后,都会使 bundle 失效。

默认使用 [id].js 或从 output.filename 中推断出的值([name] 会被预先替换为 [id] 或 [id].)。

output.chunkLoadTimeout
integer

chunk 请求到期之前的毫秒数,默认为 120 000。从 webpack 2.6.0 开始支持此选项。

output.crossOriginLoading
boolean string

只用于 target 是 web,使用了通过 script 标签的 JSONP 来按需加载 chunk。

启用 cross-origin 属性 加载 chunk。以下是可接收的值……

crossOriginLoading: false - 禁用跨域加载(默认)

crossOriginLoading: "anonymous" - 不带凭据(credential)启用跨域加载

crossOriginLoading: "use-credentials" - 带凭据(credential)启用跨域加载 with credentials

output.jsonpScriptType
string

允许自定义 script 的类型,webpack 会将 script 标签注入到 DOM 中以下载异步 chunk。可以使用以下选项:

"text/javascript"(默认)

"module":与 ES6 就绪代码一起使用。

output.devtoolFallbackmodulefilenameTemplate
string | function(info)

当上面的模板字符串或函数产生重复时使用的备用内容。

查看 output.devtoolmodulefilenameTemplate。

output.devtoolLinetoLine
boolean | object

避免使用此选项,因为它们已废弃,并将很快删除。 it is deprecated and will soon be removed.

对所有或某些模块启用「行到行映射(line to line mapping)」。这将生成基本的源映射(source map),即生成资源(generated source)的每一行,映射到原始资源(original source)的同一行。这是一个性能优化点,并且应该只需要输入行(input line)和生成行(generated line)相匹配时才使用。

传入 boolean 值,对所有模块启用或禁用此功能(默认 false)。对象可有 test, include, exclude 三种属性。例如,对某个特定目录中所有 javascript 文件启用此功能:

devtoolLinetoLine: { test: /\.js$/, include: 'src/utilities' }
output.devtoolmodulefilenameTemplate
string | function(info)

此选项仅在 「devtool 使用了需要模块名称的选项」时使用。

自定义每个 source map 的 sources 数组中使用的名称。可以通过传递模板字符串(template string)或者函数来完成。例如,当使用 devtool: 'eval',默认值是:

devtoolmodulefilenameTemplate: "webpack://[namespace]/[resource-path]?[loaders]"
模板字符串(template string)中做以下替换(通过 webpack 内部的 ModuleFilenameHelpers):

模板    描述
[absolute-resource-path]    绝对路径文件名
[all-loaders]    自动和显式的 loader,并且参数取决于第一个 loader 名称
[hash]    模块标识符的 hash
[id]    模块标识符
[loaders]    显式的 loader,并且参数取决于第一个 loader 名称
[resource]    用于解析文件的路径和用于第一个 loader 的任意查询参数
[resource-path]    不带任何查询参数,用于解析文件的路径
[namespace]    模块命名空间。在构建成为一个 library 之后,通常也是 library 名称,否则为空
当使用一个函数,同样的选项要通过 info 参数并使用驼峰式(camel-cased):

devtoolmodulefilenameTemplate: info => {
  return `webpack:///${info.resourcePath}?${info.loaders}`
}
如果多个模块产生相同的名称,使用 output.devtoolFallbackmodulefilenameTemplate 来代替这些模块。

 

(编辑:汽车网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章