首页 > 解决方案 > 如何在 webpack 中缩小(而不是别的)JS worklet 文件?

问题描述

JavaScript Worklet接口只接受带有 ES6 类的文件作为方法的参数Worklet.addModule。我有一个 webpack 之外的解决方法来缩小我的 CSS Paint 工作文件并将其放在我的 dist 文件夹中,但它会使开发中的迭代变慢。我想通过 webpack 处理这个文件,只进行缩小,没有编译,没有 webpack cruft 将类包装在一个函数中,这些都不起作用。

我已经搜索了一整天并尝试noParse从 Babel 中排除,但我仍然将缩小的类包装在一个函数中。有没有办法只通过 webpack 缩小?

//entry point

  //my workaround

    CSS.paintWorklet.addModule('./demo.min.js');// I minify and name it 

  //can I do the following?

    import(/* webpackChunkName: "paint-worklet" */ './demo')
    .then((demo) => CSS.paintWorklet.addModule(demo));

//output worklet

  //my workaround

    class Demo{......
    ...(minified)
    ...
    ......}registerPaint("demo",Demo);// defined and everything works

  //webpacked and excluded from Babel

    (window.webpackJsonp=window.webpackJsonp||[]).push([[2],
    {w0gx:function(t,e){class r......
    ...
    ...
    .......registerPaint("demo",r)}}]);// wrapped in function and undefined

不需要像通常使用 webpack 模块那样导入工作集,只需调用addModule它即可。我需要将其缩小并输入dist/,然后我需要一种方法在编译时获取散列名称以使其成为addModule. 动态导入似乎可以工作,因此工作集是一个单独的块,并且在承诺解决后您可以addModule使用它进行调用,但是由于工作集文件被包装在一个函数中,浏览器会抛出一个错误,说明registerPaint()您使用类,未定义。

标签: javascriptwebpackweb-workercss-paint-api

解决方案


推荐阅读