Sha256: b32c00394178985afc8753de28cb8fc4a07900ddfb1465fbcffc41aee6929eef

Contents?: true

Size: 807 Bytes

Versions: 38

Compression:

Stored size: 807 Bytes

Contents

import { execSync } from 'child_process';

const plugin = (opts = {}) => {
  return {
    postcssPlugin: 'postcss-gem-import',
    Once(root) {
      root.walkAtRules('import', (rule) => {
        const importPath = rule.params.replace(/['"]/g, '');

        if (importPath.startsWith('gem:')) {
          const gemName = importPath.split('gem:')[1].split('/')[0];

          try {
            const gemPath = execSync(`bundle show ${gemName}`, { encoding: 'utf8' }).trim();
            const newPath = importPath.replace(`gem:${gemName}`, gemPath);
            rule.params = `"${newPath}"`;
          } catch (error) {
            throw rule.error(`Failed to resolve gem path for ${gemName}: ${error.message}`);
          }
        }
      });
    }
  };
};

plugin.postcss = true;

export default plugin;

Version data entries

38 entries across 38 versions & 1 rubygems

Version Path
plutonium-0.20.4 postcss-gem-import.js
plutonium-0.20.3 postcss-gem-import.js
plutonium-0.20.1 postcss-gem-import.js
plutonium-0.20.0 postcss-gem-import.js
plutonium-0.19.13 postcss-gem-import.js
plutonium-0.19.12 postcss-gem-import.js
plutonium-0.19.11 postcss-gem-import.js
plutonium-0.19.10 postcss-gem-import.js
plutonium-0.19.9 postcss-gem-import.js
plutonium-0.19.8 postcss-gem-import.js
plutonium-0.19.7 postcss-gem-import.js
plutonium-0.19.6 postcss-gem-import.js
plutonium-0.19.5 postcss-gem-import.js
plutonium-0.19.4 postcss-gem-import.js
plutonium-0.19.3 postcss-gem-import.js
plutonium-0.19.2 postcss-gem-import.js
plutonium-0.19.1 postcss-gem-import.js
plutonium-0.19.0 postcss-gem-import.js
plutonium-0.18.8 postcss-gem-import.js
plutonium-0.18.7 postcss-gem-import.js