2017-01-16 3 views
0

Я использую webpack (V 1.13.2) для связывания моего webapp + ReactJS.Webpack + React: передать commit SHA из webpack в JS

Я бы хотел передать текущую передачу SHA в js.

Получение текущей фиксации SHA - straightforward, но я не мог понять, как передать ее в файл js.
Я попытался изменить выходной файл и расслоения плотных приковать коммит SHA к нему:

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

Но WebPack не будет связывать его.

Я также попытался использовать string-replace-loader как следующие:

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

client.js:

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 строка вы использование в конце не содержит новой строки. Попробуйте добавить console.log(JSON.stringify(VERSION)) в конфигурацию вашего webpack и посмотреть, включает ли он \n.

+0

Строка VERSION действительно имеет символ новой строки. Я удалил его с помощью «VERSION.replace (/ (\ r \ n | \ n | \ r)/gm," "); и это сработало. –