使用webpack
Webpack提供了一个配置对象,基于你使用webpack的方式可以有两种方式来传递这个配置对象。
CLI
如果你用CLI来读取webpack.config.js里的内容,这个文件应该要导出这个配置对象:
module.export = {
//configuration
};
node.js API
如果你用node.js API,你需要把这个配置对象当作参数传递:
webpack({
//configuration
},callback);
配置对象的内容
提示:这个配置对象就是纯javascript,它就是个node.js模块,这里举个很简单的配置文件的例子:
{
context : _dirname + "/app",
entry : "/entry",
output : {
path : _dirname + "/dist",
filename : "bundle.js"
}
}
context
context就是解析入口点的绝对路径。如果输出路径信息设定好了,那么与之相关的路径信息就被缩成了这个目录。
entry
entry point就是文件打包的入口点,如果传递的是一个字符串,那么这个字符串就会被在初始化时被当作一个模块处理。如果你传递的是一个字符串数组,所有的模块都立即加载,最后一个会被导出:
entry : ["./entry1","./entry2"]
如果你传递的是一个对象,那就会创建多个入口,也就是打了多个包。键就是包的名字,值可以是一个字符串或者一个数组。
{
entry :{
page1:"./page1",
page2:["./page1","./page2"]
},
output:{
//make sure to use [name] or [id] in outpur.filename
//when using multiple entry points
filename:"[name].bundle.js",
chunkFilename:"[id].bundle.js"
}
}
output
选项影响输出。如果你用任何哈希([hash]或者[chunkhash]),注意模块要有统一的顺序,使用OccurenceOrderPlugin或者recordsPath.
output.path
这个属性对应的是输出目录的绝对路径,[hash]被编译的哈希值所替代。
output.filename
这个属性代表每个包的相对路径。当然,它是在output.path目录下的。 [id]被包的id所替代,[name]被包的名字替代(包的名字不存在的时候就用id顶替),[hash]被编译的哈希值替代,[chunkhash]被包的哈希值替代。