在尝试打包使用 SDK 1.9 版构建的 Firefox 插件时,我遇到了一个奇怪的问题。扩展目录结构是这样的:
├── data
│ ├── file1.js
│ ├── file2.js
│ ├── jquery.min.js
│ └── uri.js
├── lib
│ ├── file3.js
│ ├── main.js
│ ├── services
│ │ ├── file4.js
│ │ ├── file5.js
│ │ └── file6.js
│ └── uri.js
├── package.json
└── package.json.backup
作为构建过程的一部分,我通过uglify.jsdata
运行'lib' 目录。这似乎工作正常。基本上我将代码库复制到不同的位置,通过 uglify 运行它,我得到相同的目录结构,除了 JS 文件被压缩。
接下来,我运行cfx xpi --pkgdir=path/to/ugly/codebase
将代码打包到 xpi 中。
如果我随后将生成的内容.xpi
移至新目录,解压缩unzip
并检查内容,则我的大部分lib
目录已被删除。目录中的文件data
很好。
tree resources/addon_name
resources/addon_name
├── data
│ ├── file1.js
│ ├── file2.js
│ ├── jquery.min.js
│ └── uri.js
└── lib
└── main.js
如果我不 uglify JS 文件,那么一切似乎都可以正常工作,当我解压缩 xpi 时,我将拥有一个完整的 lib 目录,正如我所期望的那样。
请注意,这不是丑化过程的问题(这是我检查的第一件事)。当我复制代码库并对其进行 uglify 时,我可以在此时停止该过程并列出lib
目录。它将包含我期望的所有 uglified JS 文件。只有在包装和随后的解压缩之后,它们才会消失。
我尝试使用全新的扩展来重现这个问题,但我遇到了一个稍微不同的问题。基本上,lib
目录中的文件在打包时都会被删除,无论它们是否被压缩。基本上我的步骤是:
mkdir test_extension
cd test_extension && cfx init
touch lib/uri.js // this is
cd .. && cfx xpi pkgdir=test_extension // Have to run this part twice to get ID
mkdir unpack && mv test_textension.xpi unpack
cd unpack
unzip test_extension.xpi
ls resources/test_extension/lib
=> main.js // the uri.js file is missing