postcss/postcss-simple-vars

Variables hot reloading

franciscolourenco opened this issue · 6 comments

The variables seem to be updated, but only after restarting webpack dev server. postcss.config.js seems to be added as a loader dependency by default, which means that editing this file causes webpack to recompile. However the variable files imported in postcss.config.js don't. Is there a way to access the loader in postcss.config.js in order to call addDependency with the variable files?
Otherwise how is the reloading supposed to work?

ai commented

Hi. You need to open issue in postcss-loader.

@ai postcss-simple-vars docs mention variable hot reloading. Is it currently not supported?

ai commented

They are supported by postcss-loader. It reads a config. So I have no idea how to fix it in this plugin 🤷‍♂️

One way to do it would be to receive file(s) path(s) instead of an object. That way you could you could do loader.addDependency('filepath'); require('filepath'); automatically and it would work.

ai commented

Yeap. I will think about it on next weekend.

For anyone still having this issue, it's solvable by using the plugins option of postcss-loader, which gives you access to the loader context.

Example loader definition

{
  loader: 'postcss-loader',
  options: {
    plugins: function(loader) {
      const colors = require.resolve('./colors.js');
      loader.addDependency(colors);
      delete require.cache[colors];

      return [
        simpleVars({
          variables: function() {
            return require(colors);
          },
        }),
      ];
    },
  },
}