瀏覽代碼

fix: use z-worker.js instead of inline worker (#1254)

since Firefox blocks inline workers.

fix #1253
Gerald 4 年之前
父節點
當前提交
e69b3c6c31
共有 3 個文件被更改,包括 29 次插入4 次删除
  1. 10 2
      gulpfile.js
  2. 0 1
      scripts/plaid.conf.js
  3. 19 1
      src/common/zip.js

+ 10 - 2
gulpfile.js

@@ -153,12 +153,20 @@ function logError(err) {
   return this.emit('end');
 }
 
+function copyZip() {
+  return gulp.src([
+    'node_modules/@zip.js/zip.js/dist/zip-no-worker.min.js',
+    'node_modules/@zip.js/zip.js/dist/z-worker.js',
+  ])
+    .pipe(gulp.dest(`${DIST}/public/lib`));
+}
+
 const pack = gulp.parallel(manifest, createIcons, copyI18n);
 
 exports.clean = clean;
 exports.manifest = manifest;
-exports.dev = gulp.series(gulp.parallel(pack, jsDev), watch);
-exports.build = gulp.series(clean, gulp.parallel(pack, jsProd));
+exports.dev = gulp.series(gulp.parallel(copyZip, pack, jsDev), watch);
+exports.build = gulp.series(clean, gulp.parallel(copyZip, pack, jsProd));
 exports.i18n = updateI18n;
 exports.check = checkI18n;
 exports.copyI18n = copyI18n;

+ 0 - 1
scripts/plaid.conf.js

@@ -62,7 +62,6 @@ exports.optimization = {
       ...splitVendor('codemirror'),
       ...splitVendor('tldjs'),
       ...splitVendor('vue'),
-      ...splitVendor('@zip'),
     },
   },
 };

+ 19 - 1
src/common/zip.js

@@ -1,7 +1,25 @@
 import { memoize } from './util';
 
+function loadJS(url) {
+  return new Promise((resolve, reject) => {
+    const el = document.createElement('script');
+    el.src = url;
+    el.onload = resolve;
+    el.onerror = reject;
+    document.body.append(el);
+  });
+}
+
 const loadZip = memoize(async () => {
-  const zip = await import(/* webpackChunkName: 'zip' */ '@zip.js/zip.js/dist/zip');
+  await loadJS('/public/lib/zip-no-worker.min.js');
+  const { zip } = window;
+  const workerScripts = ['/public/lib/z-worker.js'];
+  zip.configure({
+    workerScripts: {
+      deflate: workerScripts,
+      inflate: workerScripts,
+    },
+  });
   return zip;
 });