cfx xpi命令删除addon / lib目录中的压缩文件?

时间:2012-09-24 11:02:44

标签: firefox firefox-addon firefox-addon-sdk

在尝试打包使用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

1 个答案:

答案 0 :(得分:2)

如果您的插件的任何js文件中不需要lib/uri.js,它就会 从最终的XPI中删除。所以如果你有require('./uri.js') 你的main.js,包装后文件应该在那里。

我的猜测是,丑化了库 目前的cfx工具无法生成适当的清单 所有依赖项。请参阅Manifest Generation

注意关于mozilla-labs-jetpack邮件列表的原始帖子,复制了这里的答案,对其他不了解ML的人有用。