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源文件的