2014-06-08 2 views
1

uglify와 함께 r.js를 사용하여 스크립트를 축소하고 연결합니다. 스택 추적 결과를 알 수없는 프로덕션 사이트에서 일부 오류가 발생합니다. 일시적으로 기능 이름의 맹 글링을 해제하고 (변수 이름은 괜찮습니다) r.js가 uglify.js로 전달되는 구성 옵션을 래핑하므로이 작업을 수행하는 데 문제가 있습니다.r.js optimizer - 함수 이름을 변경하지 마십시오

uglify config 내 연구에서, JS 설정을 구축 섹션의 모습이 내가

-nmf 또는 --no-압착 롤러-기능을 추가 할

uglify: { 
     beautify: true, 
     indent_start: 0, 
     indent_level: 1, 
    } 

- 당신이 변수 이름을 탈수 할 경우를, 함수 이름에는 손대지 않습니다. 'no-mangle-functions': true을처럼 내가 라인

uglify: { 
     beautify: true, 
     indent_start: 0, 
     indent_level: 1, 
     '--no-mangle-functions': true 
    } 

그것은 아무것도하지 않습니다를 추가하는 경우 (from here)

.

uglify에이 옵션을 어떻게 전달합니까?

+1

당신은 자신의 웹 페이지에 예제 설정 파일을 보았다 : HTTPS :

uglify: { options: { sourceMap: 'build.min.map', sourceMappingURL: 'build.min.map' } } 

맵 파일 이름이 최종 자바 스크립트 파일 이름을 반영해야합니다

은 이러한 옵션을 추가 추하게에 소스 맵을 생성하려면 //github.com/jrburke/r.js/blob/master/build/example.build.js? r.js 버전 2의 경우'no_mangle : true' 옵션과'mangle : false' 옵션이 있습니다. – pfried

+0

예,이 옵션은 맹 글링 만 허용하거나 허용하지 않습니다. 전체 맹 글링 옵션에 대한 액세스를 허용하지 않습니다. 변수 이름은 mangle하지만 함수 이름은 제외) –

답변

1

r.js의 소스 코드에서 볼 수 있듯이 함수와 변수 이름 사이에는 직접적인 차이가 없습니다. no_functions를 디폴트

https://github.com/jrburke/r.js/blob/master/dist/r.js#L25067

false에 :

https://github.com/jrburke/r.js/blob/master/dist/r.js#L11492

그러나 실제로 기본값이 옵션의 false

합격입니다 추하게 섹션에 전달 no_functions라는 옵션이 있습니다

지금은 테스트 할 수 없기 때문에 추측하고 있습니다. 어쩌면이 옵션을 시도해 볼 수 있습니다

+1

이이를 테스트했지만 작동하지 않습니다. –

2

uglified/mangled 코드로 읽을 수있는 종류의 것을 만들려고하면 처음부터 목적을 이겨내려고합니다. 아마, 너는 뒤에 source maps입니다.

uglified.js <=> uglified.map 
+0

절대적으로 올바른 접근 방식입니다. 그러나 Chrome과 Firefox의 디버거에서 소스 맵을 사용하는 데 문제가 있다는 것을 알았으므로 위의 @pfried에서 제안한대로 'mangle : false'를 사용하려고합니다. (내 문제는 준비 및 제작 과정에서만 재현 가능합니다. dev에없는 환경). –

관련 문제