在尝试打包使用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.js运行data
和'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目录,如我所料。
请注意,这不是uglifying过程的问题(这是我检查的第一件事)。当我复制代码库并对其进行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
答案 0 :(得分:2)
如果您的插件的任何js文件中不需要lib/uri.js
,它就会
从最终的XPI中删除。所以如果你有require('./uri.js')
你的main.js,包装后文件应该在那里。
我的猜测是,丑化了库 目前的cfx工具无法生成适当的清单 所有依赖项。请参阅Manifest Generation。
注意关于mozilla-labs-jetpack邮件列表的原始帖子,复制了这里的答案,对其他不了解ML的人有用。