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 を介して および 'lib` ディレクトリを実行していdata
ます。これはうまくいくようです。基本的に、コードベースを別の場所にコピーし、それを 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
JS ファイルを醜くしないと、すべてが正常に動作するように見えます。xpi を解凍すると、予想どおり、完全な lib ディレクトリが作成されます。
これは醜いプロセスの問題ではないことに注意してください (これは私が最初に確認したことです)。コードベースをコピーして醜くすると、その時点でプロセスを停止してlib
ディレクトリを一覧表示できます。私が期待するすべての醜い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