-
Notifications
You must be signed in to change notification settings - Fork 72
如何给Jigsaw应用打补丁
陈旭 edited this page Aug 23, 2018
·
1 revision
现代化的Web应用开发比jQuery时代要复杂许多了,一个现代化的Web应用需要依赖大量的库,同时还需要使用大量的工具将这些库编译成最终可运行的文件。编译的过程一方面是将零散的代码合并在一起,另一方面编译器会借机优化代码,让他们在浏览器里更高效的运行,此外编译器还可以自动将运行时不需要用到的代码删掉(Tree shaking)。
总而言之,现在的Web应用的代码是极少直接丢到浏览器里去运行的了,这也就导致了给这类Web应用打补丁没有像jQuery时代那么简单,不能直接将源码替换到服务器了事。
基于Jigsaw开发的Web应用是这里所说的现代化Web应用的一种。
这里总体分为两个情况讲解如何给Jigsaw应用打补丁:
- Web应用自身的Bug导致的需要打补丁;
- Jigsaw的Bug导致的需要打补丁;
如前文所说的,你企图将你改好的ts文件直接丢到服务器上来修复故障的方式是错误的,正确的方式是:
- 按照你喜欢的方式将ts里的bug改掉并将它们放到编译环境里,覆盖有bug的同名文件;
- cd到你的Web应用的源码根目录(一般来说就是node_modules所在的那个目录);
- 启动编译脚本,或者执行
sh ./node_modules/.bin/ng b -aot -prod -sm --base-href="/xxx/"
,如果你不知道如何确定base-href
的值,那你需要先看看这里。 - 将编译生成的所有文件(默认是在dist目录下)全部打包,这里的所有文件都必须做到补丁包里去!一个都不能少;
- 按照你熟悉的补丁流程继续往下走;
通过前文的描述,你大概已经注意到了,你的应用的运行时里,并没有Jigsaw的代码,也没有任何其他第三方库的代码,有的只是十几个大小不一的文件。那么Jigsaw的Bug导致的补丁流程,该怎么走呢?
其实,运行时的文件里是包含了Jigsaw的代码的,只是这些代码和你的代码完全融合在一起了而已。
一般的流程将会是这样子的:
- Jigsaw的贡献者修复Bug,并合入到对应的版本里去;
- Jigsaw的核心守护者将小版本+1之后,以一个新版本的方式把修复了Bug的包发布到npm中去,如果你还不知道这里说的小版本是啥意思,请看这里;
- 在所内,我们一般会通过邮件、电话的方式通知你;在外部,你最好能够随时关注我们的官网的版本变更说明;
- 然后你取到新的Jigsaw版本,按照Web应用自身的Bug导致的需要打补丁小结的里描述的过程重新编译应用的代码,然后由应用来走补丁流程;
特别需要注意的是:即使是Jigsaw引发的bug,补丁的流程也需要应用来处(因为应用的代码需要重新编译),这和之前的补丁流程有着非常大的差异。