1. output(输出)

output用于配置一些关于webpack打包输出的信息。比如,输出的文件名、输出路径等等。

1.1. output.path

类型:string

output 目录对应一个绝对路径

path: path.resolve(__dirname, 'dist/assets')

1.2. output.filename

类型:string

这个选项决定了每个输出bundle的名称。这些bundle会被写入output.path选项指定的目录下。

filename: 'main.bundle.js'

在多入口起点、代码分隔等会生成多个bundle的情况下,可以使用下面的占位符来命名:

使用入口名称

filename: "[name].bundle.js"

使用内部chunk id:

filename: "[id].bundle.js"

使用为每一次构建(build)生成的hash:

filename: "[name].[hash].bundle.js"

使用为每一个chunk生成的hash:

filename: "[chunkhash].bundle.js"

[info] 注

当文件不发生改变时,chunkhash 不发生变化。由此可以利用来进行缓存,加快加载速度。

chunkhash 在使用开发服务时无法使用。

此选项不会影响那些按需加载的chunk,控制这些文件的输出,请使用output.chunFilename

可用模板字符串:

模板 描述
[hash] 构建相关的hash
[chunkhash] chunk内容相关的hash
[name] 模块名称
[id] chun id
[query] 模块的查询字符串,`?`后的部分

[hash][chunkhash]的长度可以使用[hash:16](默认为20)来指定。

1.3. output.chunkFilename

类型:string

此选项决定了非入口(non-entry) chunk 文件的名称。可取值与output.filename 相同。

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

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

1.4. output.publicPath

类型:string

默认值:“”,空字符串

此配置选项用于指定在浏览器中所引用的此输出目录对应的URL。相对URL会被相对于HTML页面进行解析。相对于服务器的URL、相对于协议的URL、绝对URL也可能会用到。当资源托管到CDN时,必须要设置此选项。

该选项的值是以 runtime(运行时) 或 loader(载入时) 所创建的每个 URL 为前缀。因此,在多数情况下,此选项的值都会以/结束。

以HTML页面为基准:

path: path.resolve(__dirname, "public/assets");
publicPath: "https://cdn.example.com/assets/";

项目所有的地址,都会加上publicPath的前缀。

publicPath: "/assets/";
chunkFilename: "[id].chunk.js";

这个chunk请求的地址大概为/assets/[id].chunk.js

<link href="/assets/spinner.gif" />
background-image: url(/assets/spinner.gif);

webpack-dev-server也会以publicPath为基础,以决定在哪个目录下启动服务,来访问输出的文件。

示例:

publicPath: "https://cdn.example.com/assets/", // CDN(总是 HTTPS 协议)
publicPath: "//cdn.example.com/assets/", // CDN (协议相同)
publicPath: "/assets/", // 相对于服务(server-relative)
publicPath: "assets/", // 相对于 HTML 页面
publicPath: "../assets/", // 相对于 HTML 页面
publicPath: "", // 相对于 HTML 页面(目录相同)

在编译时(compile time)无法知道输出文件的 publicPath 的情况下,可以留空,然后在入口文件(entry file)处使用自由变量(free variable) webpack_public_path,以便在运行时(runtime)进行动态设置。

 __webpack_public_path__ = myRuntimePublicPath

// 应用程序入口的其他部分

1.5. output.sourceMapFillename

类型:string

此选项会向硬盘写入一个输出文件,只在 devtool 启用了 SourceMap 选项时才使用。

配置 source map 的命名方式。默认使用"[file].map"

可以使用 #output-filename 中的 [name], [id], [hash][chunkhash] 替换符号。除此之外,还可以使用以下替换符号。[file] 占位符会被替换为原始文件的文件名。我们建议只使用 [file] 占位符,因为其他占位符在非 chunk 文件生成的 SourceMap 时不起作用。

模板 描述
[file] 模块文件名称
[filebase] 模板basename

1.6. output.devtoolModuleFilenameTemplate

Copyright © tuzhu008 2017 all right reserved,powered by Gitbook该文件修订时间: 2017-11-20 09:07:29

results matching ""

    No results matching ""