Webpack:配置入口(entry)

本文深入讲解Webpack的入口配置,包括Entry类型、Chunk名称、动态配置方法及单页和多页应用的不同打包策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

入口(entry)

参数:Entry

  • entry 是配置模块的入口,可抽象成输入,Webpack 执行构建的第一步将从入口开始搜寻及递归解析出所有入口依赖的模块
  • entry 配置是必填的,若不填则将导致 Webpack 报错退出
module.exports = {
	entry:'./src/index.js', //表示入口文件,即从index.js进入我们的项目
};

①Entry 类型

类型例子含义
string‘./app/entry’入口模块的文件路径,可以是相对路径
array[’./app/entry1’, ‘./app/entry2’]入口模块的文件路径,可以是相对路径
object{ a: ‘./app/entry-a’, b: [’./app/entry-b1’, ‘./app/entry-b2’]}配置多个入口,每个入口生成一个 Chunk

如果是 array 类型,则搭配 output.library 配置项使用时,只有数组里的最后一个入口文件的模块会被导出

②Chunk 名称

Webpack 会为每个生成的 Chunk 取一个名称,Chunk 的名称和 Entry 的配置有关:

  • 如果 entry 是一个 string 或 array ,就只会生成一个 Chunk,这时 Chunk 的名称是 main ;
  • 如果 entry 是一个 object ,就可能会出现多个 Chunk,这时 Chunk 的名称是 object 键值对里键的名称

③Entry 配置动态

假如项目里有多个页面需要为每个页面的入口配置一个 Entry ,但这些页面的数量可能会不断增长,则这时 Entry 的配置会受到到其他因素的影响导致不能写成静态的值。其解决方法是把 Entry 设置成一个函数去动态返回上面所说的配置,代码如下:

// 同步函数
entry: () => {
  return {
    a:'./pages/a',
    b:'./pages/b',
  }
};
// 异步函数
entry: () => {
  return new Promise((resolve)=>{
    resolve({
       a:'./pages/a',
       b:'./pages/b',
    });
  });
};

参数:context

Webpack 在寻找相对路径的文件时会以 context 为根目录,context 默认为执行启动 Webpack 时所在的当前工作目录。 如果想改变 context 的默认配置,则可以在配置文件里这样设置它:

module.exports = {
	context: path.resolve(__dirname, 'app')
}

注意, context 必须是一个绝对路径的字符串。 除此之外,还可以通过在启动 Webpack 时带上参数 webpack --context 来设置 context


A. 单页应用打包时的入口写法

单页应用一般就只有一个出口(可以有多个入口依赖)

一个入口文件完整写法

配置文件webpack.config.js

module.exports = {
  entry: './path/to/my/entry/file.js'
};

是下面的简写:

module.exports = {
  entry: {
    main: './path/to/my/entry/file.js'
  }

多个入口写法(一个出口)

将entey的值变为一个数组即可,如下

配置文件webpack.config.js

module.exports = {
    entry: ['./src/index.js', "./src/myutil/myutil.js"],
};

是下面的简写:

module.exports = {
    entry: {
        main:['./src/index.js', "./src/myutil/myutil.js"],
    }  
};

B. 多页应用打包时的写法

多页应用表示有多个页面,每个页面对应一个js文件,即就会有多个出口(当然,前提是有多个入口)

module.exports = {
  entry: {
    pageOne: './src/pageOne/index.js',
    pageTwo: './src/pageTwo/index.js',
    pageThree: './src/pageThree/index.js'
  }
};

出口写法

如果配置使用多个入口起点,则应该使用占位符(substitutions)来确保每个文件具有唯一的名称

module.exports = {
  entry: {
    app: './src/app.js',
    search: './src/search.js'
  },

  output: {
    filename: '[name].js',
    path: __dirname + '/dist'
  }};
// 写入到硬盘:./dist/app.js, ./dist/search.js
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值