原文地址
webpack中的
配置对象
(configuration object),根据你使用webpack的不同有两种方式传入这个对象 :
CLI
如果你使用了CLI ,将会读取webpack.config.js文件(或是由 --config 选项传入的文件)。该文件以一下形式暴露配置对象
(configuration object):
module.exports = {
// configuration
};
node.js API
如果你使用node.js API,那么你将需要把配置对象
(configuration object作为参数传入:
webpack({
// configuration
}, callback);
多个配置
你也传入一个由多个配置对象组成的数组,彼此之间是平行执行的。他们共享文件系统的缓存与监听。因此这将比多次调用webpack来的更有效率。
配置对象的内容
小贴士:在配置中你并不需要使用纯的
JSON
。使用任何你想用的JavaScript
格式。因为配置文件是一个node.js
模块。
一个超简单的配置对象例子:
{
context: __dirname + "/app",
entry: "./entry",
output: {
path: __dirname + "/dist",
filename: "bundle.js"
}
}
context参数:
用于决定entry
参数的基本目录(绝对路径)。如果设置了output.pathinfo
,包括其在内都会被设置为这个目录。
Default: process.cwd()
entry参数
打包的入口位置。
如果传入一个字符串:这个字符串将决定启动时被加载的那个模块。
如果传入一个数组:所有的模块在启动时都将被加载。并把最后一个作为出口。
entry: ["./entry1", "./entry2"]
如果传入一个对象:将会创建多个entry束(bundle)。key
就是区块的名字,value
可以时字符串或是数组。
{
entry: {
page1: "./page1",
page2: ["./entry1", "./entry2"]
},
output: {
// 当你有多个入口文件时,请确保在output.filename中使用 [name]或[id]
filename: "[name].bundle.js",
chunkFilename: "[id].bundle.js"
}
}
output参数
该选项将影响编译的结果。output将控制Webpack将编译后的文件写入磁盘的过程。请注意,即便可以存在多个入口点,但也仅需要规定一个output 即可。
当你使用哈希([hash] 或 [chunkhash])时,请确保你模块的有固定的顺序。可使用OccurenceOrderPlugin
或recordsPath
。
output.filename
该参数指定了磁盘中每一个输出文件的名字。不能在此指定绝对路径!output.path选项将决定文件被写入磁盘的位置,filename被用来单独处理每个文件的命名。(译注:这里其实强调了解耦)
单入口:
{
entry: './src/app.js',
output: {
filename: 'bundle.js',
path: './built'
}
}
// 写入磁盘路径: ./built/bundle.js
多入口
如果你的配置项会创建不知一个“chunk”(例如使用多个入口文件或使用像CommonsChunkPlugin
这样的插件),你将会用到以下置换以确保每个文件不重名。
[name] 将被替换成chunk的名字。
[hash] 将被替换成编译时的hash。
-
[chunkhash] 将被替换为chunk的hash。
{ entry: { app: './src/app.js', search: './src/search.js' }, output: { filename: '[name].js', path: __dirname + '/built' } } // 写入磁盘路径: ./built/app.js, ./built/search.js
output.path
该选项设置了output目录,并且要是一个绝对路径。
[hash] 将被替换成编译时的hash。
output.publicPath
该选项定义了在浏览器中引用时输出文件使用的公共url地址。对于内嵌的