关于node.js:NPM / Webpack无法正确加载GSAP TimelineLite

NPM / Webpack don't load GSAP TimelineLite Correctly

我在生产应用程序上重构并运行清理,并优化依赖关系。

我们有一个React组件,它使用GSAP来处理一些与过渡相关的内容,但只使用TimelineLite库。这些都是简单的东西,没有任何轻松或任何事情,因此我们不需要任何更复杂的GSAP项,现在可以将它们清理掉以进行优化。

最初,我们只是通过NPM导入了整个GSAP库,如下所示:

import 'gsap';

根据GSAP npm文档(https://www.npmjs.com/package/gsap)...

The default (main) file is TweenMax which also includes TweenLite, TimelineLite, TimelineMax, CSSPlugin, RoundPropsPlugin, BezierPlugin, AttrPlugin, DirectionalRotationPlugin, and all of the eases

现在,我想减少进口的脂肪,并切换到:

import { TimelineLite } from 'gsap';

但是,这可以正确编译,但是会引发以下客户端错误:

Uncaught TypeError: _gsap.TimelineLite is not a constructor

有人知道为什么吗?仅通过导入TimelineLite可以减轻我们的重量,但是这样做值得。我是否需要专门导入GSAP库的其他部分?

笔记:

我也尝试过import { TweenLite, TimelineLite } from 'gsap';,但没有运气。奇怪的是,import { TweenMax, TimelineLite } from 'gsap';也不起作用,但是import { TweenMax } from 'gsap';却起作用。

这是我们正在使用的动画,超级基础:

1
2
3
4
5
6
7
8
9
10
  new TimelineLite()
    .to('#urlCopyMessage', 0, { visibility: 'visible', opacity: 1 })
    .fromTo('#urlCopyMessage', 0.35,
      { opacity: 0, y: 20 },
      { opacity: 1, y: -30 }
    )
    .to('#urlCopyMessage', 0.35,
      { opacity: 0, delay: 0.25 }
    )
    .to('#urlCopyMessage', 0, { visibility: 'hidden' });


在研究了安装程序并与一些GSAP维护人员进行了交谈之后,我设法使一切正常。

事实证明,TimelineLite依赖于许多GSAP的其他内部程序包,例如TweenLiteCSSPlugin-并且您也必须以正确的顺序独立加载它们。

我发现,单独导入TimelineLite的最简单方法(具有基本依赖性)是直接通过GSAP npm文件夹结构:

import TimelineLite from 'gsap/TimelineLite';

这可以按预期工作,并且比整个TweenMax库节省了74KB的重量。 (哈哈)