使用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]被包的哈希值替代。