0

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
4

1 に答える 1

2

lib/uri.jsアドオンのどの js ファイルからも必要とされない場合、最終的な XPI から削除されます。したがってrequire('./uri.js')、main.js にある場合、ファイルはパッケージ化後にそこにあるはずです。

私の推測では、ライブラリを醜くすると、現在の cfx ツールはすべての依存関係を含む適切なマニフェストを生成できなくなります。マニフェストの生成を参照してください。

mozilla-labs-jetpack メーリング リストの元の投稿に注意してください。ここに回答をコピーして、ML を知らない他の人に役立つようにします。

于 2012-09-24T13:15:10.810 に答える