rollup-fflate.config.js 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. import { nodeResolve } from "@rollup/plugin-node-resolve";
  2. import replace from "@rollup/plugin-replace";
  3. import { terser } from "rollup-plugin-terser";
  4. import fs from "fs";
  5. const GLOBALS = "const { Array, Object, String, BigInt, Math, Date, Map, URL, Error, Uint8Array, Uint16Array, Uint32Array, DataView, Blob, Promise, TextEncoder, TextDecoder, FileReader, document, crypto, btoa } = globalThis;";
  6. const GLOBALS_WORKER = "const { Array, Object, Math, Error, Uint8Array, Uint16Array, Uint32Array, Int32Array, DataView, TextEncoder, crypto, postMessage } = globalThis;";
  7. const bundledTerserOptions = {
  8. compress: {
  9. unsafe: true,
  10. unsafe_arrows: true,
  11. unsafe_comps: true,
  12. unsafe_symbols: true,
  13. unsafe_proto: true,
  14. keep_fargs: false,
  15. passes: 3,
  16. ecma: "2020"
  17. }
  18. };
  19. const inlineTerserOptions = {
  20. compress: {
  21. unsafe: true,
  22. unsafe_arrows: true,
  23. unsafe_comps: true,
  24. unsafe_math: true,
  25. unsafe_symbols: true,
  26. unsafe_proto: true,
  27. keep_fargs: false,
  28. passes: 3,
  29. ecma: "2020"
  30. }
  31. };
  32. export default [{
  33. input: "lib/z-worker-fflate.js",
  34. output: [{
  35. intro: GLOBALS_WORKER,
  36. file: "lib/z-worker-inline.js",
  37. format: "es",
  38. plugins: [terser(inlineTerserOptions)]
  39. }],
  40. plugins: [nodeResolve()]
  41. }, {
  42. input: "lib/z-worker-inline-template.js",
  43. output: [{
  44. file: "lib/z-worker-inline.js",
  45. format: "es"
  46. }],
  47. plugins: [
  48. replace({
  49. preventAssignment: true,
  50. "__workerCode__": () => fs.readFileSync("lib/z-worker-inline.js").toString()
  51. }),
  52. terser(bundledTerserOptions)
  53. ]
  54. }, {
  55. input: ["lib/zip.js"],
  56. output: [{
  57. intro: GLOBALS,
  58. file: "dist/zip.min.js",
  59. format: "umd",
  60. name: "zip",
  61. plugins: [terser(bundledTerserOptions)]
  62. }, {
  63. intro: GLOBALS,
  64. file: "dist/zip.js",
  65. format: "umd",
  66. name: "zip"
  67. }],
  68. plugins: [nodeResolve()]
  69. }, {
  70. input: ["lib/zip-full-fflate.js"],
  71. output: [{
  72. intro: GLOBALS,
  73. file: "dist/zip-full.min.js",
  74. format: "umd",
  75. name: "zip",
  76. plugins: [terser(bundledTerserOptions)]
  77. }, {
  78. intro: GLOBALS,
  79. file: "dist/zip-full.js",
  80. format: "umd",
  81. name: "zip"
  82. }],
  83. plugins: [nodeResolve()]
  84. }, {
  85. input: "lib/zip-no-worker-fflate.js",
  86. output: [{
  87. intro: GLOBALS,
  88. file: "dist/zip-no-worker.min.js",
  89. format: "umd",
  90. name: "zip",
  91. plugins: [terser(bundledTerserOptions)]
  92. }],
  93. plugins: [nodeResolve()]
  94. }, {
  95. input: "lib/zip-no-worker-fflate-deflate.js",
  96. output: [{
  97. intro: GLOBALS,
  98. file: "dist/zip-no-worker-deflate.min.js",
  99. format: "umd",
  100. name: "zip",
  101. plugins: [terser(bundledTerserOptions)]
  102. }],
  103. plugins: [nodeResolve()]
  104. }, {
  105. input: "lib/zip-no-worker-fflate-inflate.js",
  106. output: [{
  107. intro: GLOBALS,
  108. file: "dist/zip-no-worker-inflate.min.js",
  109. format: "umd",
  110. name: "zip",
  111. plugins: [terser(bundledTerserOptions)]
  112. }],
  113. plugins: [nodeResolve()]
  114. }, {
  115. input: "lib/zip-fs.js",
  116. output: [{
  117. intro: GLOBALS,
  118. file: "dist/zip-fs.min.js",
  119. format: "umd",
  120. name: "zip",
  121. plugins: [terser(bundledTerserOptions)]
  122. }, {
  123. intro: GLOBALS,
  124. file: "dist/zip-fs.js",
  125. format: "umd",
  126. name: "zip"
  127. }],
  128. plugins: [nodeResolve()]
  129. }, {
  130. input: "index-fflate.js",
  131. output: [{
  132. intro: GLOBALS,
  133. file: "dist/zip-fs-full.min.js",
  134. format: "umd",
  135. name: "zip",
  136. plugins: [terser(bundledTerserOptions)]
  137. }, {
  138. intro: GLOBALS,
  139. file: "dist/zip-fs-full.js",
  140. format: "umd",
  141. name: "zip"
  142. }],
  143. plugins: [nodeResolve()]
  144. }, {
  145. input: "lib/z-worker.js",
  146. output: [{
  147. intro: GLOBALS_WORKER,
  148. file: "dist/z-worker.js",
  149. format: "iife",
  150. plugins: [terser(bundledTerserOptions)]
  151. }],
  152. plugins: [nodeResolve()]
  153. }];