javascript - Webpack + React : pass commit SHA from webpack to JS

标签 javascript git reactjs webpack commit

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

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

获取当前提交 SHA 为 straightforward ,但我不知道如何将其传递给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
        }
      },

客户端.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

关于javascript - Webpack + React : pass commit SHA from webpack to JS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41677228/

相关文章:

javascript - 组合条件来检查移动设备或窗口是否已调整大小

git - 在 CentO 上安装 Git

git - 我可以对 Git 别名使用一组命令(外部和内部)吗?

git - 如何使用 Ubuntu (systemd)、Github 和 SSH key 在启动时从 git 中提取

javascript - 有没有办法既解构函数参数,又保留对参数的命名引用?

javascript - React Router 4 - 受控组件未在 Switch 上卸载

Javascript 动画切换 3 种形式

javascript - 我可以在 javascript 中拆分预切片的字符串吗?

javascript - 更新仅发生在最后一行,而不是第一行

javascript - React状态钩子(Hook),toogle类,为什么两个元素都获得 "active"类?