【发布时间】:2016-12-07 21:02:37
【问题描述】:
我正在开发一个我想使用 gulp 和 browserify 构建的 angular2 应用程序。
使用tsify,我成功地输出了一个独立的bundle.js,缩小后的大小达到了1.4M。
我想要的是两个单独的捆绑文件:一个用于供应商依赖项,一个用于我的应用程序。
基本上我希望能做到这一点:
<!-- My dream index.html script tags -->
<script src="bundle_vendors.js"></script>
<script src="bundle_app.js"></script>
这是我在命令行上尝试过的:
-
我生成了第一个包:
browserify app/vendor.ts -p [tsify ] > bundle_vendors.js
我的 vendor.ts 文件只是一个导入列表:
import 'zone.js'
import 'reflect-metadata'
import '@angular/core'
import '@angular/http'
import '@angular/router'
import '@angular/common'
import '@angular/platform-browser'
import '@angular/platform-browser-dynamic'
import 'rxjs/Rx'
-
然后我创建了我的第二个包:
browserify -x @angular/core -x @angular/common -x @angular/http -x @angular/router -x rxjs/Rx -x @angular/platform-browser -x zone.js -x reflect-metadata -x @angular/platform-browser-dynamic app/main.ts -p [tsify ] > bundle_app.js
我的tsconfig.json 文件如下所示(它位于当前目录中):
{
"compilerOptions": {
"target": "ES5",
"module": "commonjs",
"moduleResolution": "node",
"lib": ["es6", "dom"],
"sourceMap": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"removeComments": true,
"noImplicitAny": false
},
"compileOnSave": false,
"exclude": [
]
}
好的部分:第二个包只包含我的应用程序,而且要小得多!
不太好的部分:它不起作用。我是浏览器,我收到Uncaught Error: Cannot find module '@angular/core'。
关于问题:
- 有什么明显的我遗漏的吗?
- 加载
bundle_vendors.js后,如何查看可用于require的模块?我正在寻找“导出”的模块列表,以便其他包可以导入它们。
我不知道从哪里开始调试。
从我读到的另一种方法是使用 angular-cli(它使用 webpack),但我从事的项目已经使用 gulp,所以我想让它工作。另外,我现在有点承诺了。
任何帮助表示赞赏!
【问题讨论】:
-
你肯定想使用 angular-cli。 Angular-cli 会自动为你创建你的包。它还将为您摇树、缩小和执行许多其他优化。不需要大口吃。说真的,我向你保证,angular-cli 是你想成为的地方。
-
我在捆绑部分使用 gulp 和 browserify 进行了一些工作(尽管捆绑包非常大),但随后
watchify部分运行缓慢……糟糕的开发体验。我确信它可以通过时间/更多技能来解决,但正如你提到的那样,这不是我想要的;)。
标签: angular typescript gulp browserify tsify