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
,