2016-08-14 3 views
8

React Native 앱을 상점에 배포하기 전에 console.log() 호출을 제거해야합니까? 코드에 console.log() 호출을 저장하면 성능이나 기타 문제가 있습니까?React 네이티브 앱에서 console.log 제거

일부 작업 주자와 로그를 제거하는 방법이 있습니까 (Grunt 또는 Gulp와 같은 웹 관련 작업 주자와 비슷한 방식으로)? 우리는 여전히 우리의 개발/디버깅/테스트 단계에서 필요하지만 생산 단계에서는 필요하지 않습니다.

감사합니다.

답변

5

당신이 패키저 또는 에뮬레이터에서 실행 할 때

if(__DEV__){ 
    console.log(); 
} 

이 방법은, 그것은 단지 실행 ... 가장 좋은 방법은 같은 문에서 디버그 코드를 래핑하는 것입니다 생각합니다. 그래서 모든 console.log 즉시 __DEV__ 사실이 아니므로 무효가 될 수

if (!__DEV__) { 
    console.log =() => {}; 
} 

: 여기에 더 많은 정보를 원하시면 ... https://github.com/facebook/react-native/tree/master/packager#pathtomodulenamemapbundle-query-params

22

글쎄, 당신은 항상 뭔가를 할 수 있습니다.

+2

이것은 더 깨끗하고 허용되는 대답이어야합니다. 이 줄이 다른 모든 줄보다 먼저 실행되는지 확인하십시오. – csotiriou

+0

@csotiriou : 그렇다면 모든 수입품이 App.js의 상단에 있습니까? – raarts

+0

@raarts 예. 그러나 나는 네이티브 반응이 자동적으로이 일을한다는 느낌을 가지고 있지만, 디폴트 릴리즈 빌드에 대해서만 그렇다. Xcode에서는 사용자 정의 릴리스 빌드를 추가하더라도 로그를 숨기지 않습니다. 그래도 대안을 찾으려고 노력하고있어. – csotiriou

6

바벨 transpiler는 다음과 같은 플러그인 당신을 위해 console 문을 제거 할 수 있습니다

npm i babel-plugin-transform-remove-console --save-dev 

편집 .babelrc :

{ 
    "env": { 
    "production": { 
     "plugins": ["transform-remove-console"] 
    } 
    } 
} 

그리고 console 문은 코드에서 제거됩니다.

출처 : https://hashnode.com/post/remove-consolelog-statements-in-production-in-react-react-native-apps-cj2rx8yj7003s2253er5a9ovw

+3

devDependencies에 저장하려면 - save 대신 -D를 사용하는 것이 더 좋습니다. –

+0

나는 이걸 시도했지만 내 디렉토리에있는 .babelrc 파일을 찾을 수 없다. –

+0

@JayakrishnanMenon 그리고 나서 분명히 .babelrc를 만들어야 만하고, 바벨 (babelrc)을 설치해야만한다. – adam