Skip to content

如何给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导致的需要打补丁;

Web应用自身的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的Bug导致的需要打补丁

通过前文的描述,你大概已经注意到了,你的应用的运行时里,并没有Jigsaw的代码,也没有任何其他第三方库的代码,有的只是十几个大小不一的文件。那么Jigsaw的Bug导致的补丁流程,该怎么走呢?

其实,运行时的文件里是包含了Jigsaw的代码的,只是这些代码和你的代码完全融合在一起了而已。

一般的流程将会是这样子的:

  • Jigsaw的贡献者修复Bug,并合入到对应的版本里去;
  • Jigsaw的核心守护者将小版本+1之后,以一个新版本的方式把修复了Bug的包发布到npm中去,如果你还不知道这里说的小版本是啥意思,请看这里
  • 在所内,我们一般会通过邮件、电话的方式通知你;在外部,你最好能够随时关注我们的官网的版本变更说明;
  • 然后你取到新的Jigsaw版本,按照Web应用自身的Bug导致的需要打补丁小结的里描述的过程重新编译应用的代码,然后由应用来走补丁流程

特别需要注意的是:即使是Jigsaw引发的bug,补丁的流程也需要应用来处(因为应用的代码需要重新编译),这和之前的补丁流程有着非常大的差异。