2017-01-16 72 views
0

我正在使用webpack(V 1.13.2)捆绑我的webapp + ReactJS。Webpack + React:将从webpack到JS的提交SHA传递到

我想将当前提交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 
     } 
     }, 

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,“”);'它的工作。 –