2012-09-24 2 views
0

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 파일이 압축 된 것을 제외하고는 동일한 디렉토리 구조가됩니다.

다음으로 코드를 xpi로 패키징하기 위해 cfx xpi --pkgdir=path/to/ugly/codebase을 실행합니다.

그때 새로운 디렉토리에 생성 .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 디렉토리를해야합니다.

위와 같은 과정이 문제가되지 않는다는 점에 유의하십시오. 코드베이스를 복사하고 그것을 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 

답변

2

lib/uri.js 경우는 추가 기능의 JS 파일에서 필요하지 않습니다, 그것은 최종 XPI에서 제거됩니다. 그러므로 만약 에 main32.fs가 require('./uri.js')이라면, 그 파일은 패키징 후에 있어야합니다.

내 생각에 라이브러리를 uglifying하면 을 현재 cfx 도구로 사용할 수 없기 때문에 모든 종속성이 인 적절한 매니페스트가 생성됩니다. Manifest Generation을 참조하십시오.

주 모질라 연구소 - 제트 팩 메일 링리스트에 원래의 게시물은 ML을 모르는 다른 사람에게 유용 여기에 답을 복사.

관련 문제