首页 > 其他分享 >webpack(入口起点entry 和 输出output)

webpack(入口起点entry 和 输出output)

时间:2023-12-26 23:01:10浏览次数:37  
标签:exports 入口 js webpack module entry output

单个入口(简写)语法

//单个入口,简写,字符串
module.exports = { entry: './path/to/my/entry/file.js', };

上面是单个入口的语法,是下面的简写:

// 单个入口,完整,对象类型
module.exports = { entry: { main: './path/to/my/entry/file.js', }, };
// 多个入口,数组。output到一个bundle.js
module.exports = { entry: ['./src/file_1.js', './src/file_2.js'], output: { filename: 'bundle.js', }, };

对象语法:扩展性好,比较繁琐

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

注:当你通过插件生成入口时,你可以传递空对象 {} 给 entry

描述入口的对象

有如下属性:

  • dependOn: 当前入口所依赖的入口。它们必须在该入口被加载前被加载。

  • filename: 指定要输出的文件名称。
  • import: 启动时需加载的模块
  • library: 指定 library 选项,为当前 entry 构建一个 library
  • runtime: 运行时 chunk 的名字。如果设置了,就会创建一个新的运行时 chunk。在 webpack 5.43.0 之后可将其设为 false 以避免一个新的运行时 chunk
  • publicPath: 当该入口的输出文件在浏览器中被引用时,为它们指定一个公共 URL 地址。请查看 output.publicPath
module.exports = {
  entry: {
    a2: 'dependingfile.js',
    b2: {
      dependOn: 'a2',
      import: './src/app.js',
    },
  },
};

runtime 和 dependOn 不应在同一个入口上同时使用,所以如下配置无效,并且会抛出错误:

module.exports = {
  entry: {
    a2: './a',
    b2: {
      runtime: 'x2',
      dependOn: 'a2',
      import: './b',
    },
  },
};

确保 runtime 不能指向已存在的入口名称,例如下面配置会抛出一个错误:

module.exports = {
  entry: {
    a1: './a',
    b1: {
      runtime: 'a1',
      import: './b',
    },
  },
};

另外 dependOn 不能是循环引用的,下面的例子也会出现错误:

module.exports = {
  entry: {
    a3: {
      import: './a',
      dependOn: 'b3',
    },
    b3: {
      import: './b',
      dependOn: 'a3',
    },
  },
};

分离 app(应用程序) 和 vendor(第三方库) 入口

webpack.config.js

module.exports = {
  entry: {
    main: './src/app.js',
    vendor: './src/vendor.js',
  },
};

webpack.prod.js

module.exports = {
  output: {
    filename: '[name].[contenthash].bundle.js',
  },
};

webpack.dev.js

 
module.exports = {
  output: {
    filename: '[name].bundle.js',
  },
};

 

 

 

 

多页面应用程序:

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

 

使用 optimization.splitChunks 为页面间共享的应用程序代码创建 bundle。由于入口起点数量的增多,多页应用能够复用多个入口起点之间的大量代码/模块,从而可以极大地从这些技术中受益

输出(output)

注意,即使可以存在多个 entry 起点,但只能指定一个 output 配置。

在 webpack 配置中,output 属性的最低要求是,将它的值设置为一个对象,然后为将输出文件的文件名配置为一个 output.filename

module.exports = {
  output: {
    filename: 'bundle.js',
  },
};

此设置输出bundle.js到dist目录

 

多个入口起点

多个入口时,output的filename使用‘占位符’ 来确保唯一命名

module.exports = {
  entry: {
    app: './src/app.js',
    search: './src/search.js',
  },
  output: {
    filename: '[name].js',
    path: __dirname + '/dist',
  },
};

// 写入到硬盘:./dist/app.js, ./dist/search.js

高级进阶

以下是对资源使用 CDN 和 hash 的复杂示例:

module.exports = {
  //...
  output: {
    path: '/home/proj/cdn/assets/[fullhash]',
    publicPath: 'https://cdn.example.com/assets/[fullhash]/',
  },
};

如果在编译时,不知道最终输出文件的 publicPath 是什么地址,则可以将其留空,并且在运行时通过入口起点文件中的 __webpack_public_path__ 动态设置。

__webpack_public_path__ = myRuntimePublicPath;

// 应用程序入口的其余部分

原文:https://webpack.docschina.org/concepts/entry-points/

标签:exports,入口,js,webpack,module,entry,output
From: https://www.cnblogs.com/withheart/p/17929569.html

相关文章

  • webpack(概念)
    入口(entry)入口起点(entrypoint)指示webpack打包起点。构建依赖图(dependencygraph)的开始。默认值是 ./src/index.js。可以配置,如下:webpack.config.jsmodule.exports={entry:'./path/to/my/entry/file.js',};输出(output)output告诉webpack在哪里输出它所创建的 bu......
  • mysql报错:Duplicate entry ‘...‘ for key ‘field‘
    错误信息"Duplicateentry'...'forkey'field'"表示在数据库表中,你正在尝试插入一条数据的'number'字段的值已经存在。这通常是由于你设置了'field'字段为唯一键(UNIQUEKEY),而你又尝试插入一个已存在的值。解决这个问题的方法有以下几种:检查输入的数据:确保你插入的数据在该字段......
  • mysql 报错 Duplicate entry ‘xxx‘ for key ‘字段名‘
    有时候对表进行操作,例如加唯一键,或者插入数据(已经有唯一键),会报错Duplicateentry...forkey...原因是primarykey(主键)或uniquekey(唯一键)的值重复。还有索引也会导致。碰到这种情况,考虑是否需要主键或唯一键的约束,如果不需要,就直接删除约束。在navicat上有√可以选。命令行如下删除......
  • [VUE] WebPack 打包后自动修改 dist 中 package.json 版本号
    我们在开发npm包时,开发期的package.json通常并不一定是发布到npm仓库的package.json。这种情况下每次改版本号需要改两个地方,比较麻烦。我一般使用webpack进行打包,所以有了下面这个小插件。插件源码modify.version.plugin.js/**修改版本号webpack插件*/functi......
  • 无涯教程-Java - ByteArrayOutputStream函数
    ByteArrayOutputStream类流在内存中创建一个缓冲区,所有发送到该流的数据都存储在该缓冲区中。以下是ByteArrayOutputStream类将提供的构造函数的列表。Sr.No.Constructor&Remark1ByteArrayOutputStream()此构造函数创建一个具有32字节缓冲区的ByteArrayOutputStream。......
  • 下载镜像提示 output: Error response from daemon: Get https://k8s.gcr.io/v2/: x5
    出现这问题可能是两种原因:1、k8s所有节点的时间不统一。2、k8s配置文件镜像仓库有问题问题:[root@master1~]#kubeadmconfigimagespull--configkubeadm-config.yamlW092001:12:10.7940302723configset.go:202]WARNING:kubeadmcannotvalidatecomponentconfigs......
  • 【HarmonyOS】如何实现entry模块页面跳转HSP共享包页面(API9)
    【关键字】API9、ArkTS、跨包路由跳转、entry模块页面跳转HSP共享包页面 【写在前面】本篇文章主要介绍使用API9ArkTS开发鸿蒙应用时,如何实现从entry模块或feature模块页面,跳转到HSPlibrary模块的页面。 【开发步骤】第一步:在API9Stage模型的工程中,【右键-New-Module......
  • ubuntu 18.04.6 编译文件系统buildroot的时候提示 buildroot/output/host/ARM-buildro
    错误提示如下:ln::无法创建符号链接buildroot/output/host/ARM-buildroot-linux-gnueabihf/sysroot/usr/lib没有文件或目录  cd进入buildroot路径,先sudomakeclean 然后再cd..到software文件夹重新make就可以了。  ......
  • 基于 Webpack5 Module Federation 的业务解耦实践
    我们是袋鼠云数栈UED团队,致力于打造优秀的一站式数据中台产品。我们始终保持工匠精神,探索前端道路,为社区积累并传播经验价值。本文作者:贝儿前言本文中会提到很多目前数栈中使用的特定名词,统一做下解释描述dt-common:每个子产品都会引入的公共包(类似NPM包)AppMenus:在......
  • vue2项目webpack打包的优化策略,降低打包文件后的大小
    1.区分开发模式和打包模式的main.js入口文件首先,在项目的根目录下创建一个名为vue.config.js的文件(如果已存在,请跳过此步骤)。然后对于你的项目中的mian.js新建一个相同内容的js文件,然后将这2个mian.js文件分别命名为打包模式的入口文件:main-prod.js开发模式的入口文件:mian-dev.js......