[译]webpack API之配置(上)

原文地址

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])时,请确保你模块的有固定的顺序。可使用OccurenceOrderPluginrecordsPath

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地址。对于内嵌的

你可能感兴趣的:(webpack,cli,api)