Chrome 插件由目录组织,里面包含各种部件文件,分发不是很方便。为此,Chrome 支持将整个插件目录打包成一个 crx 文件,这就是所谓的 Chrome 插件包。
如果我们手头有一个 crx 插件包,想要知道插件的设计细节,有办法将它解开吗?Chrome 安装 crx 插件包,应该也会先将它解开,再注册插件目录。
因此,我们可以先将 crx 插件包安装到 Chrome ,然后找到安装位置一探究竟。Chrome 插件的安装位置通常是固定的,但不同操作系统略有差异:
操作系统 | 插件安装位置 |
---|---|
macOS | ~/Library/Application Support/Google/Chrome/Default/Extensions |
以 macOS 为例,插件安装路径中有很多以 ID 命名的目录,这就是当前安装的插件:
|
|
在 Chrome 插件管理找到插件的 ID ,就可以在安装目录中找到对应的插件目录。
话说回来,为了了解插件的设计细节,就将插件安装一遍,未免太小题大做了。那么,有办法直接将 crx 插件包文件解开,还原出插件目录吗?
将文件或目录打包成一个压缩包,是一种很常见的需求,有很多技术可以做到,比如:tar 、rar 、 zip 等等。可以大胆猜测 Chrome 一定也是采用某种常用的打包技术,不太可能自己开发一种新的。
那么,问题就转变成:如何确定 crx 插件包的打包格式?
其实,作为一个粗暴的工程师,我才懒得理它是什么打包格式,我一个个试不行吗?
|
|
请注意,最好在一个空目录里面执行 tar 命令。因为 crx 插件包直接打包插件目录里的各种文件,tar 默认直接将它们解开到当前目录,跟已有的文件混在一起。
这顿操作是不是猛如虎?为什么我会先试 tar ,一次命中呢?其实全凭感觉,tar 是 Unix/Linux 下最常见的打包工具,tar 应该是每个 Linux 工程师都非常熟悉的命令,自然拿它来试。
看上去,笔者跟 Chrome 工程师是同道之人,熟悉彼此的套路,哈哈!万一 Chrome 工程师不按套路出牌也不打紧,我一个个试呗。只要不是用私有格式打包,最终一定可以拿下!
【Chrome插件开发】系列文章首发于公众号【小菜学编程】,敬请关注: