Javascript 应用程序汇总和树震动

Javascript 应用程序汇总和树震动,javascript,angular,ecmascript-6,rollupjs,Javascript,Angular,Ecmascript 6,Rollupjs,我们得到的是一个相当大的Angular 2应用程序,它主要是在Angular还很年轻的时候开发的,没有可用的编译器cli之类的东西。这样做的时候,我一直在想,在某个时候,我们会有一个树震动和AoT编译,我试图让它以一定的间隔工作,但仍然没有成功 问题是,每当我尝试应用在www上可以找到的任何rollup例程时,我都会偶然发现一些东西。。。每一次都是 我假设,使这个构建不同于其他可以在web上看到的构建的是项目布局——我们这里有一堆自编的外部Angular 2npm模块,它们将一些通用功能封装到最

我们得到的是一个相当大的
Angular 2
应用程序,它主要是在Angular还很年轻的时候开发的,没有可用的
编译器cli
之类的东西。这样做的时候,我一直在想,在某个时候,我们会有一个树震动和AoT编译,我试图让它以一定的间隔工作,但仍然没有成功

问题是,每当我尝试应用在www上可以找到的任何
rollup
例程时,我都会偶然发现一些东西。。。每一次都是

我假设,使这个构建不同于其他可以在web上看到的构建的是项目布局——我们这里有一堆自编的外部
Angular 2
npm模块,它们将一些通用功能封装到最终项目中,这些应该包含在最终包中

因此,布局是:

1) 有多个
npm
模块,其中包含
TypeScript
源文件以及
JavaScript
版本,并传输到
es2015
格式

2) 有一个应用程序有自己的模块,严重依赖从外部
npm
模块导入的模块

3) 我也不要求太多——我只想:a)把它们都打包在摇摇晃晃的包裹里,就这样;b) 为布局非常相同的产品构建实现AoT编译

问题 每当我尝试使用最简单的
汇总
模块示例时,我最终会遇到这样的情况:
'createPlatformFactory'不是由node_modules\@angular\core\bundles\core.umd.js导出的(由node_modules\@angular\platform browser dynamic\src\platform browser dynamic.js导入)。有关修复此错误的帮助,请参阅https://github.com/rollup/rollup/wiki/Troubleshooting#name-不是由模块导出的,当我尝试将项目传输到
JavaScript
,然后将其与
rollup
捆绑,甚至当我尝试通过
rollup plugin typescript
启动它时,都会发生这种情况

我对这一点的假设是,即使RC6后的角度源采用
es2015
格式
core.umd.js
不是-它采用
umd
格式,具有不同的导入/导出等

那么,有人能证实这是一个问题吗?还有,我们如何解决这个问题?(我真的尝试了所有我能想象到的解决问题的策略,但没有一个奏效。)


希望有人能帮上忙。

如上所述,问题在于
rollup
以umd输出捆绑包而不是es6源文件为目标,正如我发现的,可以通过将角度模块请求路径重定向到源文件来解决,如下所示:


if(id.startsWith('@angular/')){
返回`${u_dirname}/node_modules/${id}/index.js`;
}
并且,正如所做的那样,
汇总
过程继续进行,没有出现错误。这听起来很成功,但不是

结果,正如我所期望的,我并没有看到任何关于丢弃方法的通知,也并没有看到输出包大小的任何显著减少

此外,由于输出捆绑包试图通过运行以下操作转换为es5格式:

tsc--target es5--allowJs./dist/bundle.es2015.js--out./dist/bundle.js

node\u modules\typescript\lib\tsc.js:37826

同样的道理,一个问题解决了,另一个问题解决了,但仍然没有结果

任何关于如何处理这一问题的想法都将不胜感激


顺便说一句,考虑到所有的例子显然都是针对UMD捆绑包而不是ES6源文件,任何人都知道@angular tree Shacking在互联网上的任何例子中是如何工作的吗?

问题如上所述,事实上,
rollup
以umd输出捆绑包为目标,而不是es6源文件,这可以通过将角度模块请求路径重定向到源文件来解决,如下图所示:


if(id.startsWith('@angular/')){
返回`${u_dirname}/node_modules/${id}/index.js`;
}
并且,正如所做的那样,
汇总
过程继续进行,没有出现错误。这听起来很成功,但不是

结果,正如我所期望的,我并没有看到任何关于丢弃方法的通知,也并没有看到输出包大小的任何显著减少

此外,由于输出捆绑包试图通过运行以下操作转换为es5格式:

tsc--target es5--allowJs./dist/bundle.es2015.js--out./dist/bundle.js

node\u modules\typescript\lib\tsc.js:37826

同样的道理,一个问题解决了,另一个问题解决了,但仍然没有结果

任何关于如何处理这一问题的想法都将不胜感激

顺便说一句,有人知道@angular tree Shacking在互联网上的任何示例中是如何工作的,考虑到它们显然都是针对UMD捆绑包而不是ES6源文件的