Webpack + React: передать коммит SHA из веб-пакета в JS

Я использую webpack (V 1.13.2) для связывания моего webapp + ReactJS.

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

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

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

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

Я также попытался использовать 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,

Другие вопросы по тегам