Webpack + React:将提交的 SHA 从 webpack 传递到 JS

Webpack + React: pass commit SHA from webpack to JS

我正在使用 webpack (V 1.13.2) 来捆绑我的 webapp + ReactJS。

我想将当前提交的 SHA 传递给 js。

获取当前提交的 SHA 是 ,但我不知道如何将它传递给 js 文件。
我试图更改输出 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 的最佳方法(如果存在)是什么?

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.