diff --git a/webpack/loaders/git-loader.js b/webpack/loaders/git-loader.js new file mode 100644 index 000000000..5f003ffec --- /dev/null +++ b/webpack/loaders/git-loader.js @@ -0,0 +1,8 @@ +const { resolve } = require('path'); + +// Forces recompile whenever the current commit changes +// Useful for generating the version hash in the UI +module.exports = function(source, map) { + this.addDependency(resolve(__dirname, '../../.git/logs/HEAD')); + this.callback(null, source, map); +}; diff --git a/webpack/rules/babel-git.js b/webpack/rules/babel-git.js index 0a1919e97..b68139ed6 100644 --- a/webpack/rules/babel-git.js +++ b/webpack/rules/babel-git.js @@ -1,6 +1,9 @@ const { resolve } = require('path'); const { env } = require('../configuration'); +// This is a hack, used in conjunction with rules/git-refresh.js +// https://github.com/kentcdodds/babel-plugin-preval/issues/19 + module.exports = { test: resolve(__dirname, '../../app/soapbox/utils/code.js'), use: [ diff --git a/webpack/rules/git-refresh.js b/webpack/rules/git-refresh.js new file mode 100644 index 000000000..0b708b746 --- /dev/null +++ b/webpack/rules/git-refresh.js @@ -0,0 +1,9 @@ +const { resolve } = require('path'); + +// Recompile code.js whenever git changes +module.exports = { + test: resolve(__dirname, '../../app/soapbox/utils/code.js'), + use: { + loader: resolve(__dirname, '../loaders/git-loader.js'), + }, +}; diff --git a/webpack/rules/index.js b/webpack/rules/index.js index ad172deff..467b23f22 100644 --- a/webpack/rules/index.js +++ b/webpack/rules/index.js @@ -1,5 +1,6 @@ const babel = require('./babel'); const git = require('./babel-git'); +const gitRefresh = require('./git-refresh'); const css = require('./css'); const file = require('./file'); const nodeModules = require('./node_modules'); @@ -13,4 +14,5 @@ module.exports = [ nodeModules, babel, git, + gitRefresh, ];