2016-10-24 1 views
0

나는 package.json 스크립트 블록에서 npm으로 browserify를 호출합니다. 다음은 스크립트의 축약 된 버전입니다.access 카르마의 browserify -r 매개 변수

"build:js": "browserify -r ./config.js:config -e -d src/index.js > build/index.js" 

모든 것이 훌륭합니다. index.js 내부에서이 매개 변수를 사용하는 것은 require('config')이며, 나머지는 browserify가 처리합니다.

이제 테스트를 위해 browserify를 사용하여 카르마를 설정하려고합니다. 카르마 브라우저 인식은 해당 변수를 찾을 수 없습니다. 나는 주위를 검토 ​​한 결과 많은 발견하지 않은,하지만 그래서처럼 browserify 객체의 내부에 내 karma.conf.jsrequire: ['./src/app/config/config-dev.js']을 추가하려고 :

browserify: { 
    debug: true, 
    require: ['./src/app/config/config-dev.js'] 
} 

을하지만 카르마 인덱스에서 요구하는 문 사이의 연결을하지 않습니다 매개 변수 파일에 다른 이름이 없으면 이름이 지정되지 않았으므로. 내가 알아야 할 것은 param을 추가하기 위해 browserify CLI를 사용할 때 karma를위한 문법이다.

여기에서 내가 시도 할 수있는 것에 대한 설명이나 아이디어를 설명하는 문서에 대한 모든 안내는 매우 유용 할 것입니다. 감사!

+0

'config.js '에'require'를 줄임으로써 달성하고자하는 바는 무엇입니까? 환경이나 다른 것을 기반으로 다른 설정을 얻으실 수 있습니까? – casr

+0

질문을 이해할 수 없습니다. 나는 무엇을 단축하고 있는가? 필자는 질문에 관련되지 않은 부분을 제거하기 위해 스크립트 명령을 생략했습니다. 이게 네가 말하는거야? @casr – Kraken

+0

제 생각에는 제작 및 테스트 환경에 다른 구성을 포함하고 싶었던 것 같습니까? – casr

답변

0

package.json에 요구 해상도를 "browser" field으로 추가해보십시오.

예 :

"browser": { 
    "config": "./config" 
} 
+0

조금 설명 할 수 있습니까? – Kraken

+0

'browserify '는 항상 서버 측 commonjs 스타일 모듈을 브라우저로 가져 오기위한 것입니다. 모든 모듈이 브라우저에서 작동 할 수있는 것은 아니므로 우선 순위를 설정할 수있는''브라우저 ''키가 있습니다. 이 경우'require ("config")'가 browserify에 의해 발견 될 때마다 require ("./ config")'로 바뀝니다. – casr

+0

나는 아직도 내가 당신의 추천을 이해하고 있는지 잘 모르겠다. 빌드는 브라우저의 모든 것을 정확하게 조립합니다. 나는 카르마 - 브라우저 화에 같은 설정 객체를 전달하는 방법을 알아 내려고하고있다. – Kraken

0

사용자 환경에 따라 다른 설정을하려는 경우 다음 당신이 할 수 있습니다 :

./config.js : 당신의 package.json 당신의 다음

if (process.env.NODE_ENV === 'production') { 
    module.exports = { /* production config */ }; 
} else if (process.env.NODE_ENV === 'development') { 
    module.exports = { /* development config */ }; 
} else if (process.env.NODE_ENV === 'test') { 
    module.exports = { /* test config */ }; 
} 

다음과 같을 것입니다 :

"scripts": { 
    "build:js": "NODE_ENV=production browserify -d -e src/index.js", 
    "test": "NODE_ENV=test karma" 
}, 
"browserify": { 
    "transform": [ 
    "envify" 
    ] 
} 

envify은 환경 변수를 코드에서 문자열로 직접 바꿀 수있는 중요한 부분입니다. 예 : process.env.NODE_ENV === 'development'은 단순히 'development' === 'development'이 될 수 있습니다. 그런 다음 uglifyjs과 같은 축소 도구를 사용하여 이러한 것들을 제거 할 수 있습니다.

+0

이미 browserify 스크립트를 사용하여 환경에 따라 다른 빌드가 있습니다. 카르마 브라우저 매개 변수에 환경 매개 변수를 전달하려고합니다. – Kraken