build.js 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773
  1. const fs = require('fs');
  2. const UglifyJS = require("uglify-js");
  3. const rootFolder = 'player/';
  4. const bm_version = '5.8.1';
  5. const buildReducedVersion = process.argv[2] === 'reduced'
  6. const defaultBuilds = ['full','svg_light','svg','canvas','html', 'canvas_light', 'html_light', 'canvas_worker', 'lottie_worker']
  7. const scripts = [
  8. {
  9. src: 'js/main.js',
  10. builds: defaultBuilds
  11. },
  12. {
  13. src: 'js/utils/common.js',
  14. builds: defaultBuilds
  15. },
  16. {
  17. src: 'js/utils/BaseEvent.js',
  18. builds: defaultBuilds
  19. },
  20. {
  21. src: 'js/utils/helpers/arrays.js',
  22. builds: defaultBuilds
  23. },
  24. {
  25. src: 'js/utils/helpers/svg_elements.js',
  26. builds: ['full','svg','svg_light','html','html_light','lottie_worker']
  27. },
  28. {
  29. src: 'js/utils/helpers/html_elements.js',
  30. builds: defaultBuilds
  31. },
  32. {
  33. src: 'js/utils/helpers/dynamicProperties.js',
  34. builds: defaultBuilds
  35. },
  36. {
  37. src: 'js/utils/helpers/blendModes.js',
  38. builds: defaultBuilds
  39. },
  40. {
  41. src: 'js/utils/helpers/shapeEnums.js',
  42. builds: defaultBuilds
  43. },
  44. {
  45. src: 'js/3rd_party/transformation-matrix.js',
  46. builds: defaultBuilds
  47. },
  48. {
  49. src: 'js/3rd_party/seedrandom.js',
  50. builds: defaultBuilds
  51. },
  52. {
  53. src: 'js/3rd_party/BezierEaser.js',
  54. builds: defaultBuilds
  55. },
  56. {
  57. src: 'js/utils/animationFramePolyFill.js',
  58. builds: defaultBuilds
  59. },
  60. {
  61. src: 'js/utils/functionExtensions.js',
  62. builds: defaultBuilds
  63. },
  64. {
  65. src: 'js/utils/bez.js',
  66. builds: defaultBuilds
  67. },
  68. {
  69. src: 'js/utils/DataManager.js',
  70. builds: defaultBuilds
  71. },
  72. {
  73. src: 'js/utils/getFontProperties.js',
  74. builds: defaultBuilds
  75. },
  76. {
  77. src: 'js/utils/FontManager.js',
  78. builds: defaultBuilds
  79. },
  80. {
  81. src: 'js/utils/PropertyFactory.js',
  82. builds: defaultBuilds
  83. },
  84. {
  85. src: 'js/utils/TransformProperty.js',
  86. builds: defaultBuilds
  87. },
  88. {
  89. src: 'js/utils/shapes/ShapePath.js',
  90. builds: defaultBuilds
  91. },
  92. {
  93. src: 'js/utils/shapes/ShapeProperty.js',
  94. builds: defaultBuilds
  95. },
  96. {
  97. src: 'js/utils/shapes/ShapeModifiers.js',
  98. builds: defaultBuilds
  99. },
  100. {
  101. src: 'js/utils/shapes/TrimModifier.js',
  102. builds: defaultBuilds
  103. },
  104. {
  105. src: 'js/utils/shapes/RoundCornersModifier.js',
  106. builds: defaultBuilds
  107. },
  108. {
  109. src: 'js/utils/shapes/PuckerAndBloatModifier.js',
  110. builds: defaultBuilds
  111. },
  112. {
  113. src: 'js/utils/shapes/RepeaterModifier.js',
  114. builds: defaultBuilds
  115. },
  116. {
  117. src: 'js/utils/shapes/ShapeCollection.js',
  118. builds: defaultBuilds
  119. },
  120. {
  121. src: 'js/utils/shapes/DashProperty.js',
  122. builds: defaultBuilds
  123. },
  124. {
  125. src: 'js/utils/shapes/GradientProperty.js',
  126. builds: defaultBuilds
  127. },
  128. {
  129. src: 'js/utils/shapes/shapePathBuilder.js',
  130. builds: defaultBuilds
  131. },
  132. {
  133. src: 'js/utils/audio/AudioController.js',
  134. builds: defaultBuilds
  135. },
  136. {
  137. src: 'js/utils/imagePreloader.js',
  138. builds: ['full','canvas','canvas_light','html','html_light','svg','svg_light','lottie_worker', 'canvas_worker']
  139. },
  140. {
  141. src: 'js/utils/featureSupport.js',
  142. builds: defaultBuilds
  143. },
  144. {
  145. src: 'js/utils/filters.js',
  146. builds: defaultBuilds
  147. },
  148. {
  149. src: 'js/utils/text/TextAnimatorProperty.js',
  150. builds: defaultBuilds
  151. },
  152. {
  153. src: 'js/utils/text/TextAnimatorDataProperty.js',
  154. builds: defaultBuilds
  155. },
  156. {
  157. src: 'js/utils/text/LetterProps.js',
  158. builds: defaultBuilds
  159. },
  160. {
  161. src: 'js/utils/text/TextProperty.js',
  162. builds: defaultBuilds
  163. },
  164. {
  165. src: 'js/utils/text/TextSelectorProperty.js',
  166. builds: defaultBuilds
  167. },
  168. {
  169. src: 'js/utils/pooling/pool_factory.js',
  170. builds: defaultBuilds
  171. },
  172. {
  173. src: 'js/utils/pooling/pooling.js',
  174. builds: defaultBuilds
  175. },
  176. {
  177. src: 'js/utils/pooling/point_pool.js',
  178. builds: defaultBuilds
  179. },
  180. {
  181. src: 'js/utils/pooling/shape_pool.js',
  182. builds: defaultBuilds
  183. },
  184. {
  185. src: 'js/utils/pooling/shapeCollection_pool.js',
  186. builds: defaultBuilds
  187. },
  188. {
  189. src: 'js/utils/pooling/segments_length_pool.js',
  190. builds: defaultBuilds
  191. },
  192. {
  193. src: 'js/utils/pooling/bezier_length_pool.js',
  194. builds: defaultBuilds
  195. },
  196. {
  197. src: 'js/utils/markers/markerParser.js',
  198. builds: defaultBuilds
  199. },
  200. {
  201. src: 'js/renderers/BaseRenderer.js',
  202. builds: defaultBuilds
  203. },
  204. {
  205. src: 'js/renderers/SVGRenderer.js',
  206. builds: defaultBuilds
  207. },
  208. {
  209. src: 'js/renderers/CanvasRenderer.js',
  210. builds: ['full','canvas','canvas_light','canvas_worker', 'lottie_worker']
  211. },
  212. {
  213. src: 'js/renderers/HybridRenderer.js',
  214. builds: ['full','html','html_light']
  215. },
  216. {
  217. src: 'js/mask.js',
  218. builds: defaultBuilds
  219. },
  220. {
  221. src: 'js/elements/helpers/HierarchyElement.js',
  222. builds: defaultBuilds
  223. },
  224. {
  225. src: 'js/elements/helpers/FrameElement.js',
  226. builds: defaultBuilds
  227. },
  228. {
  229. src: 'js/elements/helpers/TransformElement.js',
  230. builds: defaultBuilds
  231. },
  232. {
  233. src: 'js/elements/helpers/RenderableElement.js',
  234. builds: defaultBuilds
  235. },
  236. {
  237. src: 'js/elements/helpers/RenderableDOMElement.js',
  238. builds: defaultBuilds
  239. },
  240. {
  241. src: 'js/elements/helpers/shapes/ProcessedElement.js',
  242. builds: defaultBuilds
  243. },
  244. {
  245. src: 'js/elements/helpers/shapes/SVGStyleData.js',
  246. builds: ['full','svg','svg_light','html','html_light', 'lottie_worker']
  247. },
  248. {
  249. src: 'js/elements/helpers/shapes/SVGShapeData.js',
  250. builds: defaultBuilds
  251. },
  252. {
  253. src: 'js/elements/helpers/shapes/SVGTransformData.js',
  254. builds: ['full','svg','svg_light','html','html_light', 'lottie_worker']
  255. },
  256. {
  257. src: 'js/elements/helpers/shapes/SVGStrokeStyleData.js',
  258. builds: ['full','svg','svg_light','html','html_light', 'lottie_worker']
  259. },
  260. {
  261. src: 'js/elements/helpers/shapes/SVGFillStyleData.js',
  262. builds: ['full','svg','svg_light','html','html_light', 'lottie_worker']
  263. },
  264. {
  265. src: 'js/elements/helpers/shapes/SVGGradientFillStyleData.js',
  266. builds: ['full','svg','svg_light','html','html_light', 'lottie_worker']
  267. },
  268. {
  269. src: 'js/elements/helpers/shapes/SVGGradientStrokeStyleData.js',
  270. builds: ['full','svg','svg_light','html','html_light', 'lottie_worker']
  271. },
  272. {
  273. src: 'js/elements/helpers/shapes/ShapeGroupData.js',
  274. builds: defaultBuilds
  275. },
  276. {
  277. src: 'js/elements/helpers/shapes/SVGElementsRenderer.js',
  278. builds: ['full','svg','svg_light','html','html_light', 'lottie_worker']
  279. },
  280. {
  281. src: 'js/elements/helpers/shapes/ShapeTransformManager.js',
  282. builds: defaultBuilds
  283. },
  284. {
  285. src: 'js/elements/helpers/shapes/CVShapeData.js',
  286. builds: ['full','canvas','canvas_light','canvas_worker', 'lottie_worker']
  287. },
  288. {
  289. src: 'js/elements/BaseElement.js',
  290. builds: defaultBuilds
  291. },
  292. {
  293. src: 'js/elements/NullElement.js',
  294. builds: defaultBuilds
  295. },
  296. {
  297. src: 'js/elements/svgElements/SVGBaseElement.js',
  298. builds: defaultBuilds
  299. },
  300. {
  301. src: 'js/elements/ShapeElement.js',
  302. builds: defaultBuilds
  303. },
  304. {
  305. src: 'js/elements/TextElement.js',
  306. builds: defaultBuilds
  307. },
  308. {
  309. src: 'js/elements/CompElement.js',
  310. builds: defaultBuilds
  311. },
  312. {
  313. src: 'js/elements/ImageElement.js',
  314. builds: defaultBuilds
  315. },
  316. {
  317. src: 'js/elements/SolidElement.js',
  318. builds: defaultBuilds
  319. },
  320. {
  321. src: 'js/elements/AudioElement.js',
  322. builds: defaultBuilds
  323. },
  324. {
  325. src: 'js/elements/FootageElement.js',
  326. builds: ['full','svg','canvas','html','canvas_worker', 'lottie_worker'],
  327. },
  328. {
  329. src: 'js/elements/svgElements/SVGCompElement.js',
  330. builds: ['full','svg','svg_light','html','html_light', 'lottie_worker']
  331. },
  332. {
  333. src: 'js/elements/svgElements/SVGTextElement.js',
  334. builds: ['full','svg','svg_light','html','html_light', 'lottie_worker']
  335. },
  336. {
  337. src: 'js/elements/svgElements/SVGShapeElement.js',
  338. builds: defaultBuilds
  339. },
  340. {
  341. src: 'js/elements/svgElements/effects/SVGTintEffect.js',
  342. builds: ['full','svg','svg_light','html','html_light', 'lottie_worker']
  343. },
  344. {
  345. src: 'js/elements/svgElements/effects/SVGFillFilter.js',
  346. builds: ['full','svg','svg_light','html','html_light', 'lottie_worker']
  347. },
  348. {
  349. src: 'js/elements/svgElements/effects/SVGGaussianBlurEffect.js',
  350. builds: ['full','svg','svg_light','html','html_light', 'lottie_worker']
  351. },
  352. {
  353. src: 'js/elements/svgElements/effects/SVGStrokeEffect.js',
  354. builds: ['full','svg','svg_light','html','html_light', 'lottie_worker']
  355. },
  356. {
  357. src: 'js/elements/svgElements/effects/SVGTritoneFilter.js',
  358. builds: ['full','svg','svg_light','html','html_light', 'lottie_worker']
  359. },
  360. {
  361. src: 'js/elements/svgElements/effects/SVGProLevelsFilter.js',
  362. builds: ['full','svg','svg_light','html','html_light', 'lottie_worker']
  363. },
  364. {
  365. src: 'js/elements/svgElements/effects/SVGDropShadowEffect.js',
  366. builds: ['full','svg','svg_light','html','html_light', 'lottie_worker']
  367. },
  368. {
  369. src: 'js/elements/svgElements/effects/SVGMatte3Effect.js',
  370. builds: ['full','svg','svg_light','html','html_light', 'lottie_worker']
  371. },
  372. {
  373. src: 'js/elements/svgElements/SVGEffects.js',
  374. builds: ['full','svg','html', 'lottie_worker']
  375. },
  376. {
  377. src: 'js/elements/svgElements/SVGEffectsPlaceholder.js',
  378. builds: ['svg_light','html_light']
  379. },
  380. {
  381. src: 'js/elements/canvasElements/CVContextData.js',
  382. builds: ['full','canvas','canvas_light','canvas_worker', 'lottie_worker']
  383. },
  384. {
  385. src: 'js/elements/canvasElements/CVBaseElement.js',
  386. builds: ['full','canvas','canvas_light','canvas_worker', 'lottie_worker']
  387. },
  388. {
  389. src: 'js/elements/canvasElements/CVImageElement.js',
  390. builds: ['full','canvas','canvas_light']
  391. },
  392. {
  393. src: 'js/elements/canvasElements/CVCompElement.js',
  394. builds: ['full','canvas','canvas_light','canvas_worker', 'lottie_worker']
  395. },
  396. {
  397. src: 'js/elements/canvasElements/CVMaskElement.js',
  398. builds: ['full','canvas','canvas_light','canvas_worker', 'lottie_worker']
  399. },
  400. {
  401. src: 'js/elements/canvasElements/CVShapeElement.js',
  402. builds: ['full','canvas','canvas_light','canvas_worker', 'lottie_worker']
  403. },
  404. {
  405. src: 'js/elements/canvasElements/CVSolidElement.js',
  406. builds: ['full','canvas','canvas_light','canvas_worker', 'lottie_worker']
  407. },
  408. {
  409. src: 'js/elements/canvasElements/CVTextElement.js',
  410. builds: ['full','canvas','canvas_light']
  411. },
  412. {
  413. src: 'js/elements/canvasElements/CVEffects.js',
  414. builds: ['full','canvas','canvas_light','html','html_light','canvas_worker', 'lottie_worker']
  415. },
  416. {
  417. src: 'js/elements/htmlElements/HBaseElement.js',
  418. builds: ['full','html','html_light']
  419. },
  420. {
  421. src: 'js/elements/htmlElements/HSolidElement.js',
  422. builds: ['full','html','html_light']
  423. },
  424. {
  425. src: 'js/elements/htmlElements/HCompElement.js',
  426. builds: ['full','html','html_light']
  427. },
  428. {
  429. src: 'js/elements/htmlElements/HShapeElement.js',
  430. builds: ['full','html','html_light']
  431. },
  432. {
  433. src: 'js/elements/htmlElements/HTextElement.js',
  434. builds: ['full','html','html_light']
  435. },
  436. {
  437. src: 'js/elements/htmlElements/HImageElement.js',
  438. builds: ['full','html','html_light']
  439. },
  440. {
  441. src: 'js/elements/htmlElements/HCameraElement.js',
  442. builds: ['full','html','html_light']
  443. },
  444. {
  445. src: 'js/elements/htmlElements/HEffects.js',
  446. builds: ['full','html','html_light']
  447. },
  448. {
  449. src: 'js/animation/AnimationManager.js',
  450. builds: defaultBuilds
  451. },
  452. {
  453. src: 'js/animation/AnimationItem.js',
  454. builds: defaultBuilds
  455. },
  456. {
  457. src: 'js/utils/expressions/Expressions.js',
  458. builds: ['full','svg','canvas','html','canvas_worker', 'lottie_worker']
  459. },
  460. {
  461. src: 'js/utils/expressions/ExpressionManager.js',
  462. builds: ['full','svg','canvas','html','canvas_worker', 'lottie_worker']
  463. },
  464. {
  465. src: 'js/utils/expressions/expressionHelpers.js',
  466. builds: ['full','svg','canvas','html','canvas_worker', 'lottie_worker']
  467. },
  468. {
  469. src: 'js/utils/expressions/ExpressionPropertyDecorator.js',
  470. builds: ['full','svg','canvas','html','canvas_worker', 'lottie_worker']
  471. },
  472. {
  473. src: 'js/utils/expressions/ExpressionTextPropertyDecorator.js',
  474. builds: ['full','svg','canvas','html','canvas_worker', 'lottie_worker']
  475. },
  476. {
  477. src: 'js/utils/expressions/shapes/ShapePathInterface.js',
  478. builds: ['full','svg','canvas','html','canvas_worker', 'lottie_worker']
  479. },
  480. {
  481. src: 'js/utils/expressions/PropertyGroupFactory.js',
  482. builds: ['full','svg','canvas','html','canvas_worker', 'lottie_worker']
  483. },
  484. {
  485. src: 'js/utils/expressions/PropertyInterface.js',
  486. builds: ['full','svg','canvas','html','canvas_worker', 'lottie_worker']
  487. },
  488. {
  489. src: 'js/utils/expressions/ShapeInterface.js',
  490. builds: ['full','svg','canvas','html','canvas_worker', 'lottie_worker']
  491. },
  492. {
  493. src: 'js/utils/expressions/TextInterface.js',
  494. builds: ['full','svg','canvas','html','canvas_worker', 'lottie_worker']
  495. },
  496. {
  497. src: 'js/utils/expressions/LayerInterface.js',
  498. builds: ['full','svg','canvas','html','canvas_worker', 'lottie_worker']
  499. },
  500. {
  501. src: 'js/utils/expressions/FootageInterface.js',
  502. builds: ['full','svg','canvas','html','canvas_worker', 'lottie_worker']
  503. },
  504. {
  505. src: 'js/utils/expressions/CompInterface.js',
  506. builds: ['full','svg','canvas','html','canvas_worker', 'lottie_worker']
  507. },
  508. {
  509. src: 'js/utils/expressions/TransformInterface.js',
  510. builds: ['full','svg','canvas','html','canvas_worker', 'lottie_worker']
  511. },
  512. {
  513. src: 'js/utils/expressions/ProjectInterface.js',
  514. builds: ['full','svg','canvas','html','canvas_worker', 'lottie_worker']
  515. },
  516. {
  517. src: 'js/utils/expressions/EffectInterface.js',
  518. builds: ['full','svg','canvas','html','canvas_worker', 'lottie_worker']
  519. },
  520. {
  521. src: 'js/utils/expressions/MaskInterface.js',
  522. builds: ['full','svg','canvas','html','canvas_worker', 'lottie_worker']
  523. },
  524. {
  525. src: 'js/utils/expressions/ExpressionValueFactory.js',
  526. builds: ['full','svg','canvas','html','canvas_worker', 'lottie_worker']
  527. },
  528. {
  529. src: 'js/utils/expressions/TextSelectorPropertyDecorator.js',
  530. builds: ['full','svg','canvas','html','canvas_worker', 'lottie_worker']
  531. },
  532. {
  533. src: 'js/effects/SliderEffect.js',
  534. builds: ['full','svg','canvas','html','canvas_worker', 'lottie_worker']
  535. },
  536. {
  537. src: 'js/effects/EffectsManagerPlaceholder.js',
  538. builds: ['svg_light','html_light']
  539. },
  540. {
  541. src: 'js/EffectsManager.js',
  542. builds: ['full','svg','canvas','html','canvas_worker', 'lottie_worker']
  543. }
  544. ]
  545. function concatScripts(scripts, build) {
  546. return new Promise((resolve, reject)=>{
  547. // Concatenating scripts
  548. try {
  549. let scriptsString = ''
  550. scripts.forEach((script)=> {
  551. if(script.builds.indexOf(build) !== -1) {
  552. scriptsString += fs.readFileSync(`${rootFolder}${script.src}`, {encoding: 'utf8'});
  553. scriptsString += '\r\n';
  554. }
  555. })
  556. resolve(scriptsString);
  557. } catch(err) {
  558. reject(err);
  559. }
  560. });
  561. }
  562. function wrapScriptWithModule(code, build) {
  563. return new Promise((resolve, reject)=>{
  564. try {
  565. // Wrapping with module
  566. let moduleFileName = (build =='canvas_worker' || build =='lottie_worker') ? 'module_worker' : 'module';
  567. let wrappedCode = fs.readFileSync(`${rootFolder}js/${moduleFileName}.js`, "utf8");
  568. wrappedCode = wrappedCode.replace('/* <%= contents %> */',code);
  569. wrappedCode = wrappedCode.replace('[[BM_VERSION]]',bm_version);
  570. resolve(wrappedCode);
  571. } catch(err) {
  572. reject(err);
  573. }
  574. });
  575. }
  576. function uglifyCode(code) {
  577. return new Promise((resolve, reject)=>{
  578. try {
  579. const result = UglifyJS.minify(code, {
  580. output:
  581. {
  582. ascii_only:true
  583. },
  584. toplevel:true,
  585. mangle: {
  586. reserved: ['lottie']
  587. }
  588. });
  589. if (result.error) {
  590. reject(result.error)
  591. } else {
  592. resolve(result.code)
  593. }
  594. } catch(err) {
  595. reject(err)
  596. }
  597. })
  598. }
  599. async function modularizeCode(code, build) {
  600. const globalScope = (build =='canvas_worker' || build =='lottie_worker') ? 'self' : 'window'
  601. return `(typeof navigator !== "undefined") && (function(root, factory) {
  602. if (typeof define === "function" && define.amd) {
  603. define(function() {
  604. return factory(root);
  605. });
  606. } else if (typeof module === "object" && module.exports) {
  607. module.exports = factory(root);
  608. } else {
  609. root.lottie = factory(root);
  610. root.bodymovin = root.lottie;
  611. }
  612. }((${globalScope} || {}), function(window) {
  613. ${code}
  614. return lottie;
  615. }));`
  616. }
  617. async function buildVersion(scripts, version) {
  618. const code = await concatScripts(scripts, version.build)
  619. const wrappedCode = await wrapScriptWithModule(code, version.build)
  620. const processedCode = await version.process(wrappedCode)
  621. const modularizedCode = await modularizeCode(processedCode, version.build)
  622. const saved = await save(modularizedCode, version.fileName)
  623. return saved
  624. }
  625. function save(code, fileName) {
  626. return new Promise((resolve, reject)=> {
  627. fs.writeFile(`build/player/${fileName}`, code, (err) => {
  628. if (err) {
  629. reject(err)
  630. } else {
  631. resolve(true)
  632. }
  633. });
  634. })
  635. }
  636. function noop(code) {
  637. return Promise.resolve(code)
  638. }
  639. function buildVersions(scripts) {
  640. return new Promise((resolve, reject) => {
  641. let versions = [
  642. {
  643. fileName: 'lottie.js',
  644. build: 'full',
  645. process: noop
  646. },
  647. {
  648. fileName: 'lottie.min.js',
  649. build: 'full',
  650. process: uglifyCode
  651. },
  652. {
  653. fileName: 'lottie_light.js',
  654. build: 'svg_light',
  655. process: noop
  656. },
  657. {
  658. fileName: 'lottie_light.min.js',
  659. build: 'svg_light',
  660. process: uglifyCode
  661. },
  662. {
  663. fileName: 'lottie_svg.js',
  664. build: 'svg',
  665. process: noop
  666. },
  667. {
  668. fileName: 'lottie_svg.min.js',
  669. build: 'svg',
  670. process: uglifyCode
  671. },
  672. {
  673. fileName: 'lottie_light_canvas.js',
  674. build: 'canvas_light',
  675. process: noop
  676. },
  677. {
  678. fileName: 'lottie_light_canvas.min.js',
  679. build: 'canvas_light',
  680. process: uglifyCode
  681. },
  682. {
  683. fileName: 'lottie_canvas.js',
  684. build: 'canvas',
  685. process: noop
  686. },
  687. {
  688. fileName: 'lottie_canvas.min.js',
  689. build: 'canvas',
  690. process: uglifyCode
  691. },
  692. {
  693. fileName: 'lottie_canvas_worker.js',
  694. build: 'canvas_worker',
  695. process: noop
  696. },
  697. {
  698. fileName: 'lottie_canvas_worker.min.js',
  699. build: 'canvas_worker',
  700. process: uglifyCode
  701. },
  702. {
  703. fileName: 'lottie_worker.js',
  704. build: 'lottie_worker',
  705. process: noop
  706. },
  707. {
  708. fileName: 'lottie_worker.min.js',
  709. build: 'lottie_worker',
  710. process: uglifyCode
  711. },
  712. {
  713. fileName: 'lottie_html.js',
  714. build: 'html',
  715. process: noop
  716. },
  717. {
  718. fileName: 'lottie_html.min.js',
  719. build: 'html',
  720. process: uglifyCode
  721. },
  722. {
  723. fileName: 'lottie_light_html.js',
  724. build: 'html_light',
  725. process: noop
  726. },
  727. {
  728. fileName: 'lottie_light_html.min.js',
  729. build: 'html_light',
  730. process: uglifyCode
  731. }];
  732. if (buildReducedVersion) {
  733. versions = versions.splice(0,1);
  734. }
  735. const buildProcesses = versions.map((version)=>{
  736. return buildVersion(scripts, version)
  737. })
  738. Promise.all(buildProcesses)
  739. .then(() => {
  740. resolve('Build Process Ended')
  741. })
  742. .catch((err)=>{
  743. reject(err)
  744. })
  745. })
  746. }
  747. function handleError(err) {
  748. console.log(err);
  749. }
  750. async function build() {
  751. try {
  752. const result = await buildVersions(scripts);
  753. } catch(err) {
  754. handleError(err);
  755. }
  756. }
  757. build()