2017-01-16 2 views
0

webapp + ReactJS를 webpack (V 1.13.2)과 함께 사용하고 있습니다.Webpack + React : webpack에서 JS로 커밋 SHA 전달

현재 커밋 SHA를 js에 전달하고 싶습니다.

현재 커밋 SHA를 얻는 것은 straightforward이지만 js 파일로 전달하는 방법을 알 수 없습니다.
나는 출력의 js 파일을 변경하려하고 그것에 SHA 커밋 체인 :

output:{ 
     path: distPath, 
     publicPath: '/', 
     filename: "client.min.js?" + COMMIT_SHA 
     }, 

을하지만 웹팩은 번들하지 않습니다.

webpack.config.js: 
{ 
     test: /\.jsx?$/, 
     loader: 'string-replace-loader', 
     query: { 
      search: 'COMMIT_SHA_ANCHOR', 
      replace: VERSION 
     } 
     }, 

client.js :

은 또한 다음과 같은 string-replace-loader 사용하려고

var commit = 'COMMIT_SHA_ANCHOR'; 

을하지만 난 구문 오류가 (이 문자열을 닫기 전에 새 줄을 만듭니다) 수 :

Unterminated string constant (34:13) 

var commit = '4820fa5de22d3463a0ca39c1d4067a62800d1d07 
    |   ^
    35 | '; 

커밋 SHA를 js에 전달하는 가장 좋은 방법은 무엇입니까?

답변

1

DefinePlugin은 원하는대로해야합니다. 에서

당신의 webpack.config.js :

plugins: [ 
    new webpack.DefinePlugin({COMMIT_SHA: JSON.stringify(VERSION)}) 
] 

이것은 당신이 어디를 참조 할 수있는 전역 변수 COMMIT_SHA 만듭니다 :

console.log(COMMIT_SHA); 

당신은 또한 VERSION 문자열 당신이있어 확인해야합니다을 using은 끝에 개행을 포함하지 않습니다. 웹 팩 구성에 console.log(JSON.stringify(VERSION))을 추가하고 \n이 포함되어 있는지 확인하십시오.

+0

VERSION 문자열에는 실제로 개행 문자가 있습니다. 'VERSION.replace (/ (\ r \ n | \ n | \ r)/gm, "");' 그리고 효과가있었습니다. –

관련 문제