Rollup 打包工具的介绍和使用

rollup.js 打包工具

参考链接:https://rollupjs.org/ 官网
介绍:
Rollup is a module bundler for JavaScript which compiles small pieces of code into something larger and more complex, such as a library or application. It uses the new standardized format for code modules included in the ES6 revision of JavaScript, instead of previous idiosyncratic solutions such as CommonJS and AMD. ES6 modules let you freely and seamlessly combine the most useful individual functions from your favorite libraries. This will eventually be possible natively, but Rollup lets you do it today.
Rollup 是一个JavaScript编写的一小段代码变得更大和更复杂的模块式,如库或应用程序。它采用新的标准化格式的代码模块中包含JavaScript 6修订,代替了以往的独特的解决方案如CommonJS和AMD。ES6模块让你自由地和无缝地结合最有用的个体功能从您最喜爱的图书馆。这将最终有可能来,但总让你今天做。

它的其中一个优点是打包你的 js 文件的时候如果发现你的无用变量,会将其删掉

参考链接:https://rollupjs.org/repl?version=0.51.8&shareable=JTdCJTIybW9kdWxlcyUyMiUzQSU1QiU3QiUyMm5hbWUlMjIlM0ElMjJtYWluLmpzJTIyJTJDJTIyY29kZSUyMiUzQSUyMmltcG9ydCUyMCU3QiUyMGN1YmUlMjAlN0QlMjBmcm9tJTIwJy4lMkZtYXRocy5qcyclM0IlNUNuY29uc29sZS5sb2coJTIwY3ViZSglMjA1JTIwKSUyMCklM0IlMjAlMkYlMkYlMjAxMjUlMjIlN0QlMkMlN0IlMjJuYW1lJTIyJTNBJTIybWF0aHMuanMlMjIlMkMlMjJjb2RlJTIyJTNBJTIyJTJGJTJGJTIwVGhpcyUyMGZ1bmN0aW9uJTIwaXNuJ3QlMjB1c2VkJTIwYW55d2hlcmUlMkMlMjBzbyU1Q24lMkYlMkYlMjBSb2xsdXAlMjBleGNsdWRlcyUyMGl0JTIwZnJvbSUyMHRoZSUyMGJ1bmRsZS4uLiU1Q25leHBvcnQlMjBmdW5jdGlvbiUyMHNxdWFyZSUyMCglMjB4JTIwKSUyMCU3QiU1Q24lNUN0cmV0dXJuJTIweCUyMColMjB4JTNCJTVDbiU3RCU1Q24lNUNuJTJGJTJGJTIwVGhpcyUyMGZ1bmN0aW9uJTIwZ2V0cyUyMGluY2x1ZGVkJTVDbmV4cG9ydCUyMGZ1bmN0aW9uJTIwY3ViZSUyMCglMjB4JTIwKSUyMCU3QiU1Q24lNUN0JTJGJTJGJTIwcmV3cml0ZSUyMHRoaXMlMjBhcyUyMCU2MHNxdWFyZSglMjB4JTIwKSUyMColMjB4JTYwJTVDbiU1Q3QlMkYlMkYlMjBhbmQlMjBzZWUlMjB3aGF0JTIwaGFwcGVucyElNUNuJTVDdHJldHVybiUyMHglMjAqJTIweCUyMColMjB4JTNCJTVDbiU3RCUyMiU3RCU1RCUyQyUyMm9wdGlvbnMlMjIlM0ElN0IlMjJmb3JtYXQlMjIlM0ElMjJ1bWQlMjIlMkMlMjJnbG9iYWxzJTIyJTNBJTdCJTdEJTJDJTIybmFtZSUyMiUzQSUyMm15QnVuZGxlJTIyJTJDJTIyYW1kJTIyJTNBJTdCJTIyaWQlMjIlM0ElMjIlMjIlN0QlN0QlMkMlMjJleGFtcGxlJTIyJTNBbnVsbCU3RA==

它还有一个比较强大的功能是,可以将你的 js 中的代码,编译成你想要的格式,如下图

image.png
  1. 接下来 做一个 demo ,在桌面新建一个 rolluptest 文件夹

参考链接:https://www.cnblogs.com/vajoy/p/5518442.html

  1. 在命令行中装包

参考链接:https://github.com/rollup/rollup github

 cnpm install --global rollup
  1. 初始化项目
npm init
  1. 在项目中新建一个配置文件 rollup.config.js
    编辑 rollup.config.js 文件
export default {
    //目录
    entry: 'src/main.js',
    //你想将其格式化成什么格式(必选项不然会报错)
    //format: 'es',
    dest: 'build/bundle.js' // 输出文件
};
  1. 在项目中新建文件结构如下

src -> main.js
build -> maths.js

  1. 编辑文件
    main.js
import { cube } from './maths.js';
console.log( cube( 5 ) ); // 125

maths.js

export function square ( x ) {
    return x * x;
}

export function cube ( x ) {
    return x * x * x;
}
  1. 执行程序
// -c 是直接执行的  config 文件
//-c, --config                Use this config file (if argument is used but value
   is unspecified, defaults to rollup.config.js)

rollup -c

这里报了如下图所示的错误

image.png

说明我们必须选择一种编译输出的格式
编辑 rollup.config.js 文件

export default {
    //目录
    entry: 'src/main.js',
    //你想将其格式化成什么格式
    format: 'es',
    dest: 'rel/bundle.js' // 输出文件
};
  1. 再执行程序 $ rollup -c,成功之后你会发现 build 文件夹中新生成了一个 bundle.js 文件
    bundle.js
function cube ( x ) {
    return x * x * x;
}

console.log( cube( 5 ) ); // 125

这里将我们 maths.js 文件中前面导出的 square 函数给自动删掉了 因为导出会默认只生效最后的那个

  1. 我们可以在 rollup.config.js 文件中 加入 sourceMap 属性,方便我们查看编译的代码去了哪里
export default {
    //目录
    entry: 'src/main.js',
    //你想将其格式化成什么格式
    format: 'es',
    sourceMap: true,   //加上这里即可
    dest: 'build/bundle.js' // 输出文件
};

再执行程序 $ rollup -c,会发现在 build 文件夹中生成了一个 bundle.js.map文件
bundle.js.map

{"version":3,"file":"bundle.js","sources":["../src/maths.js","../src/main.js"],"sourcesContent":["export function square ( x ) {\r\n\treturn x * x;\r\n}\r\n\r\nexport function cube ( x ) {\r\n\treturn x * x * x;\r\n}","import { cube } from './maths.js';\r\nconsole.log( cube( 5 ) ); // 125"],"names":[],"mappings":";;AAIO,SAAS,IAAI,GAAG,CAAC,GAAG;CAC1B,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;;;CACjB,DCLD,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC"}

bundle.js 文件的最后一行也多了一句注释

//# sourceMappingURL=bundle.js.map
  1. 最后说下:

Rollup 也支持直接在模块中来被调用执行,这样很方便跟 grunt/gulp 等工具进行协作。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 156,423评论 4 359
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,339评论 1 289
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 106,241评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,503评论 0 203
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 51,824评论 3 285
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,262评论 1 207
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,615评论 2 309
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,337评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 33,989评论 1 238
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,300评论 2 240
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,829评论 1 256
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,193评论 2 250
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,753评论 3 230
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 25,970评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,708评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,295评论 2 267
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,207评论 2 258

推荐阅读更多精彩内容

  • 无意中看到zhangwnag大佬分享的webpack教程感觉受益匪浅,特此分享以备自己日后查看,也希望更多的人看到...
    小小字符阅读 8,079评论 7 35
  • 最近在学习 Webpack,网上大多数入门教程都是基于 Webpack 1.x 版本的,我学习 Webpack 的...
    My_Oh_My阅读 8,089评论 40 247
  • 在现在的前端开发中,前后端分离、模块化开发、版本控制、文件合并与压缩、mock数据等等一些原本后端的思想开始...
    Charlot阅读 5,386评论 1 32
  • 彼岸花(Lycorisradiata),别名“曼珠沙华”又称“舍子花”,多年生草本植物。 (红色彼岸花)意义:音义...
    啊常的简书阅读 1,105评论 0 7
  • 点灯,展卷。 橘光下,文字开始在纸页上旋转出优雅的芭蕾,静默里,挂钟发出悠扬的声音,一日的劳碌过后,于此时,放空自...
    苗戈儿阅读 217评论 0 0