rollup的input配置和output配置详解

简介: 【8月更文挑战第5天】rollup的input配置和output配置详解

Rollup基础入门
通过上文,我们了解了rollup的基础用法,了解了其input和output基础配置,这篇文章,我们学习一下其详细用法。

基础配置演示

首先,我们创建并初始化一个演示项目,安装rollup依赖

mkdir rollup
cd rollup
npm init -y
npm i rollup -s

然后创建src目录,目录内创建两个文件作为演示代码
image.png
最后,我们创建rollup.config.js配置文件,写入一个最基本的配置

export default {
   
   
  input: 'src/index.js',
  output: {
   
   
    file: 'dist/main.js',
    format:"umd"
  }
};

现在,我们打包看看
GIF 2022-12-29 21-40-07.gif

详细配置演示

rollup的input属性用来配置打包入口相关设置,output用来配置打包出口相关设置

input

input指定打包入口文件,支持字符串数组对象三种配置方式。

支持类型 示例 含义
string input: "src/index.js", 指定单个打包入口
[] input: ["src/index.js", "src/log.js"], 指定多个打包入口
{ } input:{
 a:  'src/index.js',
  'b/index':  'src/log.js'

}, | 指定多个打包入口,并指定打包名称 |

字符串类型最为简单,就如我们上面的示例一样,参考上篇文章,这里不再赘述。
使用数组或者对象类型作为 input 的值,那么入口将被打包到独立的输出区块(chunks),简单来说,就是有几个入口文件,打包出来就有几个输出文件。我们通过示例来进行演示。

要注意的是,使用数组类型对象类型,必须使用output.dir指定输出chunks的文件名!

数组类型

我们在rollup.config.js中更改配置

export default {
   
   
  input: ["src/index.js", "src/log.js"],
  output: {
   
   
    dir: "bundle",
    format: "esm",
  },
};

打包试试
image.png
log.js

const log = function (msg){
   
   
  console.log("--------info---------");
  console.log(msg);
  console.log("--------info---------");
};
const error = function (msg){
   
   
  console.log("--------error---------");
  console.log(msg);
  console.log("--------error---------");
};

export {
   
    error, log };

如果你使用数组或者对象作为 input 的值,那么它们将被打包到独立的输出区块(chunks)。(几个入口文件,即几个输出js文件)

对象类型

export default {
   
   
  input: {
   
   
    a: "src/index.js",
    "b/index": "src/log.js",
  },
  output: {
   
   
    dir: "bundle",
    format: "esm",
  },
};

执行 rollup --config 后
image.png
bundle\b\index.js

const log = function (msg){
   
   
  console.log("--------info---------");
  console.log(msg);
  console.log("--------info---------");
};
const error = function (msg){
   
   
  console.log("--------error---------");
  console.log(msg);
  console.log("--------error---------");
};


export {
   
    error, log };

可以发现,对象类型的好处是可以自定义名称!!!
那,数组类型的方式能该默认的chunk名吗?通过output.entryFileNames可以更改。参考下文!

output

output.file

该选项用于指定打包后的js文件名。

注:只有当生成的 chunk 不超过一个时,该选项才会生效。

output.dir

该选项用于指定所有生成 chunk 文件所在的目录。

注:input类型为对象或者数组时,该选项是必须的!!(即如果生成多个 chunk,则此选项是必须的。)

output.format

该选项用于指定生成 bundle 的格式。可以是以下之一:

  • amd - 异步模块定义,适用于 RequireJS 等模块加载器
  • cjs - CommonJS,适用于 Node 环境和其他打包工具(别名:commonjs)
  • es - 将 bundle 保留为 ES 模块文件,适用于其他打包工具以及支持
相关文章
|
前端开发 JavaScript
Bootstrap File Input,最好用的文件上传组件(1)
Bootstrap File Input,最好用的文件上传组件
636 0
Bootstrap File Input,最好用的文件上传组件(1)
|
前端开发
vuecli3打包报警告:chunk chunk-common [mini-css-extract-plugin] Conflicting order.
vuecli3打包报警告:chunk chunk-common [mini-css-extract-plugin] Conflicting order.
328 0
vuecli3打包报警告:chunk chunk-common [mini-css-extract-plugin] Conflicting order.
|
4月前
LangChain 构建问题之定义extract_local_group_size工具如何解决
LangChain 构建问题之定义extract_local_group_size工具如何解决
24 0
|
7月前
|
DataWorks 数据管理 大数据
DataWorks操作报错合集之DataWorksUDF 报错:evaluate for user defined function xxx cannot be loaded from any resources,该怎么处理
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
108 0
|
存储 JSON UED
Flask框架之RESTful--参数验证--add_argument方法参数详解
参数验证的重要性,Flask-RESTful 参数验证方法,add_argument方法参数详解
|
流计算 索引
flink-sql入es报错:Missing required options are document-type
我是在flink-sql创建es表的时候报的错,报错提示缺少对应的options,及document-type ,我连忙去flink官方文档查找答案
409 0
flink-sql入es报错:Missing required options are document-type
ES中的Multi_match深入解读:best_fields、most_fields、cross_fields用法一览
ES中的Multi_match深入解读:best_fields、most_fields、cross_fields用法一览
ES中的Multi_match深入解读:best_fields、most_fields、cross_fields用法一览
使用SpringBoot报错:Inferred type ‘S‘ for type parameter ‘S‘ is not within its bound。【解决办法】
使用SpringBoot报错:Inferred type ‘S‘ for type parameter ‘S‘ is not within its bound。【解决办法】
使用SpringBoot报错:Inferred type ‘S‘ for type parameter ‘S‘ is not within its bound。【解决办法】
|
前端开发
前端项目实战2-npm WARN config global --global, --local are deprecated. Use `–location解决方案
前端项目实战2-npm WARN config global --global, --local are deprecated. Use `–location解决方案
1216 0