首页 » 前端开发 » 正文

Webpack配置文档【译文】

写在前面

为了方便后期查阅资料,所以打算直接把官方文档翻译一遍放在此处,官方文档请参考附录一。限本人英语翻译水平有限,如果有觉得翻译不恰当的甚至有翻译错误的,欢迎留言指正,谢谢。 此篇文章的最后翻译时间是2016.10.13。 同时已经翻译的的其他两篇分别是

为了方便阅读,注意以下几种格式:

  • 这个格式表示的是webpack提供的API,它至少对应了一个小标题。
  • 关于默认值及一些提示信息采用这种方式

    Default:0

  • 举例的代码格式如下:
module.exports = {
    // code
};

下面开始正文。 Webpack有一个配置对象,根据你的使用,你有2种方式来传递这个配置对象。

命令行界面(CLI)

如果你使用命令行界面(参考译文文档),webpack会读取webpack.config.js(或者通过–config传递的参数)。这个文件应该导出一个配置对象:

module.exports = {
    // configuration
};

node.js API

如果你使用node.js API,你需要作为参数传递这个配置对象:

webpack({
    // configuration
}, callback);

多重配置

以上两种情况下,你也可以使用配置数组,他们会并行处理。他们共享文件系统缓存和监听器(watchers),这样会比调用webpack多次要高效得多。

配置对象的内容

提示:记住你不需要写纯的JSON到配置文件中。你可以使用任意JavaScript,这只是一个node.js模块而已……

一个非常简单的配置对象例子:

{
    context: __dirname + "/app",
    entry: "./entry",
    output: {
        path: __dirname + "/dist",
        filename: "bundle.js"
    }
}

context

用来解析entry选项的基础目录(绝对路径)。如果output.pathinfo设置了,包含的pathinfo会基于当前目录。

默认值:process.cwd() //(译注:当前目录)

entry

打包(bundle)的入口点。 如果你传入一个字符串,这个字符串会被解析成一个模块,这个模块在起始时被加载。 如果你传递一个数组,所有的模块都会在启动时被加载,其中最后一个被导出。

entry: ["./entry1", "./entry2"]

如果你传入一个对象,多个打包将被创建。对象的键是分块(chunk)的名字,值可以是一个字符串或者数组。

{
    entry: {
        page1: "./page1",
        page2: ["./entry1", "./entry2"]
    },
    output: {
        // 确保使用 [name] 或 [id] 在 output.filename 中当使用多个入口点时
        filename: "[name].bundle.js",
        chunkFilename: "[id].bundle.js"
    }
}

output

影响编译输出结果的选项。output选项告诉webpack如何将编译好的文件写到磁盘上。记住,虽然可以有多个entry点,只需要指定一个output选项。 如果你使用任何 哈希([hash] 或 [chunkhash]),请确保模块的顺序一致,使用OccurenceOrderPlugin 或 recordsPath。

output.filename

指定磁盘上每个输出文件的名字。这里你不能指定一个绝对路径,output.path选项决定这些文件在磁盘上的路径,filename只是用来命名单独的文件名。 单入口

{
  entry: './src/app.js',
  output: {
    filename: 'bundle.js',
    path: './built'
  }
}

// writes to disk: ./built/bundle.js

多入口 如果你的配置创建了不止一个单独的块(比如多个入口点或者使用类似CommonsChunkPlugin的插件),你应该使用以下的替代(substitution)来表征每个文件都拥有唯一名字。

  • [name]用于替换成块的名字
  • [hash]用于替换成此次编译的哈希值
  • [chunkhash]用于替换成块的哈希值(译者注:hash和chunkhash的区别在于,前者是根据此次编译产生的,后者是根据当前文件去产生的。在一次webpack中,使用[hash]会让所有的文件产生同样的一个hash值,因为这个hash值是和此次编译相关的;而使用[chunkhash]会让所有的文件产生不同的hash值,因为这个hash值是根据当前文件去产生的
{
  entry: {
    app: './src/app.js',
    search: './src/search.js'
  },
  output: {
    filename: '[name].js',
    path: __dirname + '/built'
  }
}

// writes to disk: ./built/app.js, ./built/search.js

output.path

输出目录的绝对路径(必填项)。 [hash]用于替换成编译的哈希值。

output.publicPath

指定输出文件在浏览器中被访问时的公共URL地址。对嵌入了<script>或<link>的标签或引用资源(如图片)的加载器(loader),当他们在磁盘上的存储路径与path定义的不相同,publicPath用来作为href或url()。当你想要放(host)一些或所有输出文件到不同的域名下或CDN上时,这会很有帮助。另外,Webpack Dev Server也使用publicPath来决定输出文件的位置。和path一样,你可以使用[hash]替代来生成一个更好的缓存配置。 config.js

output: {
    path: "/home/proj/public/assets",
    publicPath: "/assets/"
}

index.html

<head>
  <link href="/assets/spinner.gif"/>
</head>

一个更复杂的使用CDN和hash的例子如下: config.js

output: {
    path: "/home/proj/cdn/assets/[hash]",
    publicPath: "http://cdn.example.com/assets/[hash]/"
}

注意:为了防止最终输出文件的publicPath 在编译时间未知,可以在入口文件留空来设置成运行时动态获取。如果你在编译时不知道publicPath ,你可以忽略它并在入口点上设置__webpack_public_path__。

 __webpack_public_path__ = myRuntimePublicPath

// rest of your application entry

 

output.chunkFilename

非入口的分块的文件名,这是相对于output.path目录的相对路径。

  • [id] 用于替换成分块的id
  • [name]用于替换成分块的名字(如果分块没有名字将使用id)
  • [hash]用于替换成编译的hash值
  • [chunkhash]用于替换成分块的hash值

output.sourceMapFilename

JavaScript文件的SourceMap名字,他们都是在output.path目录里边。

  • [file]用于替换成JavaScript文件名
  • [id]用于替换成分块的id
  • [hash]用于替换成编译的哈希值

默认: “[file].map”

output.devtoolModuleFilenameTemplate

给生成SourceMap的sources数组的函数中使用的文件名模板字符串。

  • [resource]用于替换成Webpack解析文件的路径,包括最右侧的加载器的查询参数(如果有的话)
  • [resource-path]和[resource]一样,除了不包括加载器查询参数
  • [loaders]是一直到最右侧的加载器和参数的名字列表(仅显式的加载器)
  • [all-loaders]是一直到最右侧的加载器和参数的名字列表(包括自动加载器)
  • [id]用于替换成模块的id
  • [hash]用于替换成模块标识的hash
  • [absolute-resource-path]用于替换成文件名的绝对路径

Default (devtool=[inline-]source-map): “webpack:///[resource-path]” Default (devtool=eval): “webpack:///[resource-path]?[loaders]” Default (devtool=eval-source-map): “webpack:///[resource-path]?[hash]”

也能够在一个字符串模板中定义成函数。这个函数将接受一个info对象参数用于导出以下属性:

  • identifier(标识)
  • shortIdentifier(短标识)
  • resource(资源)
  • resourcePath(资源路径)
  • absoluteResourcePath(绝对资源路径)
  • allLoaders(所有加载器)
  • query(查询条件)
  • moduleId(模块ID)
  • hash(哈希值)

output.devtoolFallbackModuleFilenameTemplate

output.devtoolModuleFilenameTemplate相似,但是用来处理模块标识重名。

Default: “webpack:///[resourcePath]?[hash]”

output.devtoolLineToLine

对所有/指定的模块激活行到行的映射模式。行到行映射模式使用一个简单的SourceMap文件,这个文件的每一个生成代码行都会被映射到它对应的原有代码行上。这是一个性能优化。仅在你的性能需要更佳时并且你确认输入行对应输出的行时使用。 true激活所有模块(不推荐) 类似于module.loaders的对象{test, include, exclude}可以激活特定的文件

Default: disabled

output.hotUpdateChunkFilename

Hot Update Chunks(热更新块)的文件名。他们在output.path目录中。

  • [id]用于替换成块的id
  • [hash]用于替换编译的哈希值。(记录中最后的哈希值)

Default: “[id].[hash].hot-update.js”

output.hotUpdateMainFilename

热更新主文件的文件名。该文件在output.path目录中。

  • [hash]用于替换编译的哈希值。(记录中最后的哈希值)

Default: “[hash].hot-update.json”

output.jsonpFunction

webpack用于异步加载块的JSONP函数。 一个简短的函数能够轻微减少文件体积。如果在单个页面上有多个webpack实例,请使用不同的标识。

Default: “webpackJsonp”

output.hotUpdateFunction

webpack用来异步加载热更新块的JSONP函数。

Default: “webpackHotUpdate”

output.pathinfo

包含模块的注释信息。

 require(/* ./test */23)

 请不要在生产环境中使用。

Default: false

output.library

如果设置该项,bundle将导出成一个库。output.library是库的名字。如果你打算写一个库并且想把它发布成一个单独文件,请使用该项。

output.libraryTarget

导出库的格式:

  • “var” – 通过设置变量导出: var Library = xxx (默认)
  • “this” – 通过设置this的属性导出: this[“Library”] = xxx
  • “commonjs” – 通过设置 exports的属性导出: exports[“Library”] = xxx
  • “commonjs2” – 通过设置module.exports导出: module.exports = xxx
  • “amd” – 导出到AMD(可选的命名 – 通过library选项设置名字)
  • “umd” – 导出到AMD, CommonJS2或作为根的属性

Default: “var”

如果output.library没有设置,但是output.libraryTarget设置成了一个不为var的值,导出对象的每个属性(除了amd,commonjs2和amd外)都会被复制。

output.umdNamedDefine

如果output.libraryTarget设置成umd,并且output.library已经设置,将这个值设置成true会命名这个AMD模块。

output.sourcePrefix

将boundle代码的每一行都加上这个字符串前缀。

Default: “\t”

output.crossOriginLoading

该选项允许跨域的块加载。 可能的值有:

  • false – 禁用跨域加载
  • “anonymous” – 跨域加载启用。使用anonymous不会有证书(credentials)和当前的请求一起发送
  • “use-credentials” – 跨域加载启用,并且在发送请求时带上证书

关于跨域加载的相关信息请参考MDN

Default: false

module

影响普通模块(NormalModuleFactory)的选项

module.loaders

一个自动应用的加载器数组。 每一个数组元素可以有以下属性:

  • test: 必须满足的条件
  • exclude: 必须不满足的条件
  • include: 必须满足的条件
  • loader: 用”!”分隔的加载器字符串
  • loaders: 加载器字符串数组

条件可以是一个正则表达式(用绝对路径进行测试)、包含绝对路径的字符串、一个返回bool的参数为绝对路径的函数(function(absPath):bool) 或者一包含了以上的条件的数组(an array of one of these combined with “and”–译者:这段话没懂怎么翻译合适,欢迎高手留言帮忙)。 更多参见(英文):loaders 重要:这里的加载器会被解析成与他们应用的资源相关,也就是说他们不会解析成和配置文件相关。如果你有从npm安装的加载器并且你的mode_modules文件夹不是所有源文件的父级,webpack就不能找到这个加载器。此时你需要手动增加这个node_modules目录的绝对路径到resolveLoader.root选项中。(resolveLoader: { root: path.join(__dirname, “node_modules”) }) 例子:

module.loaders: [
  {
    // "test" is commonly used to match the file extension
    test: /\.jsx$/,

    // "include" is commonly used to match the directories
    include: [
      path.resolve(__dirname, "app/src"),
      path.resolve(__dirname, "app/test")
    ],

    // "exclude" should be used to exclude exceptions
    // try to prefer "include" when possible

    // the "loader"
    loader: "babel-loader"
  }
]

module.preLoaders, module.postLoaders

语法和module.loaders相似。一个前置/后置加载器的数组。

module.noParse

一个正则表达式或者一个正则表达式数组。不要解析(parse)文件匹配。 他会对完整的已解析(resolved)的请求进行匹配。 这在忽略大的库时能够提高性能。 这些文件需要没有调用过require,define或类似方法。但是他们可以使用exports 和 module.exports

自动创建默认内容module.xxxContextXxx

有多种选项可以用来配置自动创建的内容(context)。我们区别(differentiate)3种自动创建的内容:

  • exprContext: 一个作为依赖的表达式(即require(expr))
  • wrappedContext: 一个增加前置和/或后置字符串的表达式(即require(“./templates/” + expr))
  • unknownContext: 其他任何require不可解析的用法(即 require)

对自动创建的内容的4种可用的选项:

  • Request: 内容的请求
  • Recursive: 子目录应当被遍历
  • RegExp: 正则表达式
  • Critical: 当前这种类型的依赖应当考虑是危险的(抛出警告)

(译者注:以上2种是从前到后分别选择一项进行拼接的,具体请参考后文) 所有的选项和默认项: unknownContextRequest = “.”, unknownContextRecursive = true, unknownContextRegExp = /^\.\/.*$/, unknownContextCritical = true exprContextRequest = “.”, exprContextRegExp = /^\.\/.*$/, exprContextRecursive = true, exprContextCritical = true wrappedContextRegExp = /.*/, wrappedContextRecursive = true, wrappedContextCritical = false 注意:module.wrappedContextRegExp 只涉及到完整正则表达式的中间部分,其余部分从前缀和后缀中产生。 例子:

{
  module: {
    // Disable handling of unknown requires
    unknownContextRegExp: /$^/,
    unknownContextCritical: false,

    // Disable handling of requires with a single expression
    exprContextRegExp: /$^/,
    exprContextCritical: false,

    // Warn for every expression in require
    wrappedContextCritical: true
  }
}

resolve

影响解析的模块的选项。

resolve.alias

用其他模块或者路径来替换模块。 期望的是一个键为模块名的对象,其值是新的路径。这和替换比较相似但是这个方法更加聪明一些。如果键是以$结尾的,那么只有精确的匹配(除掉$后剩下部分)才会被替换。 如果值是一个相对路径,那么他将相对于require时的文件路径。 举例: 用不同的别名(alias)设置来调用require /abc/entry.js。

alias: require(“xyz”) require(“xyz/file.js”)
{} /abc/node_modules/xyz/index.js /abc/node_modules/xyz/file.js
{ xyz: “/absolute/path/to/file.js” } /absolute/path/to/file.js /abc/node_modules/xyz/file.js
{ xyz$: “/absolute/path/to/file.js” } /absolute/path/to/file.js error
{ xyz: “./dir/file.js” } /abc/dir/file.js /abc/node_modules/xyz/file.js
{ xyz$: “./dir/file.js” } /abc/dir/file.js error
{ xyz: “/some/dir” } /some/dir/index.js /some/dir/file.js
{ xyz$: “/some/dir” } /some/dir/index.js /abc/node_modules/xyz/file.js
{ xyz: “./dir” } /abc/dir/index.js /abc/dir/file.js
{ xyz: “modu” } /abc/node_modules/modu/index.js /abc/node_modules/modu/file.js
{ xyz$: “modu” } /abc/node_modules/modu/index.js /abc/node_modules/xyz/file.js
{ xyz: “modu/some/file.js” } /abc/node_modules/modu/some/file.js error
{ xyz: “modu/dir” } /abc/node_modules/modu/dir/index.js /abc/node_modules/dir/file.js
{ xyz: “xyz/dir” } /abc/node_modules/xyz/dir/index.js /abc/node_modules/xyz/dir/file.js
{ xyz$: “xyz/dir” } /abc/node_modules/xyz/dir/index.js /abc/node_modules/xyz/file.js

index.js可能会根据定义的package.json而被解析到其他文件。 /abc/node_modules也可能会解析到/mode_modules。

resolve.root

包含你的模块的目录(绝对路径)。可以是一个目录数组。这个设置用来增加个人目录到搜索路径中。

它必须是一个绝对路径,不要传递像./app/modules这样的路径

例子:

var path = require('path');

// ...
resolve: {
  root: [
    path.resolve('./app/modules'),
    path.resolve('./vendor/modules')
  ]
}

resolve.modulesDirectories

一个用于查找模块的目录名数组,webpack会解析当前目录和其父级目录。这个方法和node查找node_modules目录的方法类似。比如值设置为[“mydir”],webpack会查找”./mydir”,”../mydir”,”../../mydir”等。

Default: [“web_modules”, “node_modules”] 注意: 传 “../someDir”, “app”, “.” 或一个绝对路径在这里并不必要。请只用目录名而不是一个路径。当且仅当你期望查找的路径有多个层级时使用,否则请用resolve.root 选项。

resolve.fallback

当webpack在resolve.root 或resolve.modulesDirectories中找不到模块时应该查找的目录(绝对路径或其数组)。

resolve.extensions

应当用来解析模块的后缀名数组。比如,为了发现CoffeeScript,你的数组应该包括字符串”.coffee”。

Default: [“”, “.webpack.js”, “.web.js”, “.js”]

 重要:设置这个选项将覆盖默认值,这意味着webpack将不会尝试解析使用默认后缀名的模块。如果你需要那些有他们自己后缀名的模块(比如require(‘./somefile.ext’))能够正常解析,你必须在你的数组中包括一个空的字符串。类似的,如果你需要那些不包含后缀名的模块(比如require(‘underscore’))能够解析成带”.js”后缀名的文件,你必须将”.js”包含进你的数组中。

resolve.packageMains

在package.json中查找符合这些字段的文件。

Default: [“webpack”, “browser”, “web”, “browserify”, [“jam”, “main”], “main”]

resolve.packageAlias

在package.json中查找符合这些字段的对象。作为别名的这些键值对需要根据这个文档来创建。

默认没有设置

比如”browser”会检查browser字段。

resolve.unsafeCache

激活在解析你的部分文件时的具有侵略性(aggressive)的但是不安全的缓存。(在极少数情况下)会出现缓存的路径下文件修改失败。这个选项期望一个正则表达式或正则表达式数组,或true(所有文件)。如果解析的路径满足匹配,就会被缓存。

Default: []

resolveLoader

resolve相似,不过是给加载器的。

// Default:
{
    modulesDirectories: ["web_loaders", "web_modules", "node_loaders", "node_modules"],
    extensions: ["", ".webpack-loader.js", ".web-loader.js", ".loader.js", ".js"],
    packageMains: ["webpackLoader", "webLoader", "loader", "main"]
}

记得你可以在这里使用alias和其他功能,这和resolve一样。比如{ txt: ‘raw-loader’ }会利用(shim)txt!templates/demo.txt来使用raw-loader。

resolveLoader.moduleTemplates

resolveLoader 的唯一一个区别于resolve的属性。这个属性描述了哪种模块名会被尝试。

 Default: [“*-webpack-loader”, “*-web-loader”, “*-loader”, “*”]

externals

指定不需要被webpack解析但是需要成为打包结果的依赖项。这个类型的依赖项依赖于output.libraryTarget。 其值可以是一个对象,一个字符串,一个函数,一个正则或一个数组。

  • 字符串:一个与之完整匹配的依赖名字会变成外部依赖项。
  • 对象:如果一个依赖项完整匹配了一个对象的属性名(键),这个对象的属性值(值)会作为依赖。属性值可以包含一个以空格分开的包括前缀或后缀的依赖类型。如果属性值设置成true,属性名会被使用;如果其值是false,对他外部的测试将取消掉,而且这个依赖不是外部依赖。参见下面的例子。
  • 函数:function(context, request, callback(err, result)) 这个函数会在每个依赖上调用。如果结果传递给callback回调,值会像对象的属性值一样被处理(参见上一条)。
  • 正则表达式:每一个匹配的依赖会变成外部依赖。匹配的文本会作为request参数传递给外部依赖。因为request是用来产生外部代码钩子(hook)的代码,所以如果你正在匹配一个commonjs包(比如 ‘../some/package.js’),请使用上面的函数策略。你可以通过callback(null, “require(‘” + request + “‘)”来导入这个包,这会生成module.exports = require(‘../some/package.js’),在webpack上下文(context)以外使用require。
  • 数组:这套方案的多个值。

例子:

{
    output: { libraryTarget: "commonjs" },
    externals: [
        {
            a: false, // a is not external
            b: true, // b is external (require("b"))
            "./c": "c", // "./c" is external (require("c"))
            "./d": "var d" // "./d" is external (d)
        },
        // Every non-relative module is external
        // abc -> require("abc")
        /^[a-z\-0-9]+$/,
        function(context, request, callback) {
            // Every module prefixed with "global-" becomes external
            // "global-abc" -> abc
            if(/^global-/.test(request))
                return callback(null, "var " + request.substr(7));
            callback();
        },
        "./e" // "./e" is external (require("./e"))
    ]
}

 

type value resulting import code
“var” “abc” module.exports = abc;
“var” “abc.def” module.exports = abc.def;
“this” “abc” (function() { module.exports = this[“abc”]; }());
“this” [“abc”, “def”] (function() { module.exports = this[“abc”][“def”]; }());
“commonjs” “abc” module.exports = require(“abc”);
“commonjs” [“abc”, “def”] module.exports = require(“abc”).def;
“amd” “abc” define([“abc”], function(X) { module.exports = X; })
“umd” “abc” everything above

如果没有编译成amd/umd的目标,强制执行amd或者umd作为一个external值会出现问题。

注意:如果使用umd,你可以对各种导入的类型指定带有commjs,commonjs2,amd和root的属性的不同值作为external的值。

target

  • “web”: (默认)以类浏览器环境使用编译
  • “webworker”:以WebWorker方式编译
  • “node”:以类node.js环境编译(使用require来加载分块(chunk))
  • “async-node”:以类node.js环境编译(使用fs和vm来异步加载分块)
  • “node-webkit”:以webkit使用编译,使用jsonp分块加载,同时支持内置node.js模块加require(“nw.gui”)(实验性)
  • “electron”: 以Electron的使用编译–支持加载Electron专用的模块

bail

报告第一个错误作为一个硬错误(hard error),而不是无视掉这个错误。

profile

对每个模块捕获时间信息。

提示:使用分析工具(官方英文)来可视化它。–json或stats.toJson()会返回JSON格式

cache

缓存生成的模块和分块来提高增量构建时的性能。 这在监听(watch)模式下默认开启。 你可以传false来关闭它。 你也可以传一个对象来激活它,webpack会缓存传递的对象。通过这种方式你可以在多个编译器调用时共享缓存对象。注意:不要用不同配置的调用来共享缓存。

watch

进入监听模式,当文件变更时重新构建。

watchOptions.aggregateTimeout

(只能在使用CLI或者简单的node.js API时使用) 在第一次变更之后延时多少毫秒之后再重新构建。默认值是300。

watchOptions.poll

(只能在使用CLI或者简单的node.js API时使用) true: 使用轮询 number: 在特定的间隔上使用轮询

默认值是undefined

debug

将加载器切换到debug模式。

devtool

选择一个开发者工具来增强调试。

  • eval – 每一个模块会带eval 和//@ sourceURL 执行
  • source-map – 触发SourceMap,同样参见output.sourceMapFilename。
  • hidden-source-map – 和source-map相同,但是不会增加一个引用的注释到bundle中。
  • inline-souce-map – SourceMap作为DataUrl加到JavaScript文件中
  • eval-source-map – 每个模块都用eval执行并且SourceMap会作为DataUrl加到这个eval中。
  • cheap-source-map – 不带列映射的SourceMap。加载器中的SourceMap不会被使用
  • cheap-module-source-map – 不带列映射的SourceMap。加载器中的SourceMap简化成每行一个单独的映射。

以@,#或#@开头会强制显示编译指示(pragma style)。(webpack@1版本中默认用@,webpack@2版本中默认用#,推荐用#)(译者注:关于编译指示可以参考stackoverflow上的提问,同时这里默认值的注解参考了关于Webpack文档错误的讨论) 除了hidden,inline,eval和编译指示外,其他项都可以相互组合使用,比如cheap-module-inline-source-map, cheap-eval-source-map, #@source-map

提示:如果你的模块以及包含了SourceMap,你需要使用 source-map-loader 来合并被触发的SourceMap。

devtool build speed rebuild speed production supported quality
eval +++ +++ no generated code
cheap-eval-source-map + ++ no transformed code (lines only)
cheap-source-map + o yes transformed code (lines only)
cheap-module-eval-source-map o ++ no original source (lines only)
cheap-module-source-map o yes original source (lines only)
eval-source-map + no original source
source-map yes original source

例子:

{
    devtool: "#inline-source-map"
}
// =>
//# sourceMappingURL=...

注意:下一个主要版本-d的默认值会修改成cheap-module-eval-source-map

devServer

当使用webpack-dev-server CLI时 用来配置 webpack-dev-server 。 例子:

{
    devServer: {
        contentBase: "./build",
    }
}

node

node的一些东西的实现(polyfill)或桩(mock)。

  • console: true/false
  • global:true/false
  • process:true, “mock” ,false
  • Buffer:true/false
  • __filename: true(真实文件名),”mock”(“/index.js”)或false
  • __dirname: true(真实目录名),”mock”(“/”)或false
  • <node buildin>: true, “mock”, “empty”或false
// Default:
{
    console: false,
    global: true,
    process: true,
    Buffer: true,
    __filename: "mock",
    __dirname: "mock",
    setImmediate: true
}

amd

设置require.amd和define.amd的值。 例子:amd: { jQuery: true } (针对 老的 1.x AMD 版本的jQuery)

loader

定义在加载内容中可用的值。

recordsPath, recordsInputPath, recordsOutputPath

存储/加载编译器状态到一个json文件中,或从一个json文件中存储/加载编译器状态。这将使模块和分块的id保持一致。 要求传入一个绝对路径。如果recordsInputPathrecordsOutputPath的值未定义,recordsPath将被使用 当在编译器中多个模块间使用热代码替换(Hot Code Replacement)的话这是必填项。

plugins

给编译器的附加插件。  

附录

本文共 2 个回复

发表评论