嘗試打包使用SDK 1.9版構建的Firefox加載項時,出現了一個奇怪的問題。擴展目錄結構是這樣的:cfx xpi命令刪除addon/lib目錄中的壓縮文件?
├── 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
如果我不醜化JS文件,然後一切似乎很好地工作,當我解壓XPI我會因爲我希望一個完整的lib目錄。
請注意,這不是uglifying進程的問題(這是我檢查的第一件事)。當我複製代碼庫並將其隱藏起來時,我可以停止該過程並列出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