diff --git a/index.js b/index.js index 5998b52..d6f6bef 100644 --- a/index.js +++ b/index.js @@ -4,6 +4,19 @@ var through = require('through'); var Core = require('css-modules-loader-core'); var FileSystemLoader = require('css-modules-loader-core/lib/file-system-loader'); var assign = require('object-assign'); +var stringHash = require('string-hash'); + +/* + Custom `generateScopedName` function for `postcss-modules-scope`. + Appends a hash of the css source. +*/ +function createScopedNameFunc (plugin) { + var orig = plugin.generateScopedName; + return function (name, path, css) { + var hash = stringHash(css).toString(36).substr(0, 5); + return orig.apply(plugin, arguments) + '___' + hash; + } +}; var cssExt = /\.css$/; module.exports = function (browserify, options) { @@ -31,6 +44,12 @@ module.exports = function (browserify, options) { var plugin = require(name); + // custom scoped name generation + if (name === 'postcss-modules-scope') { + options[name] = options[name] || {}; + options[name].generateScopedName = createScopedNameFunc(plugin); + } + if (name in options) { plugin = plugin(options[name]); } else { diff --git a/package.json b/package.json index 419f84f..80d17d2 100644 --- a/package.json +++ b/package.json @@ -4,8 +4,9 @@ "description": "A browserify transform to load CSS Modules", "main": "index.js", "dependencies": { - "css-modules-loader-core": "0.0.10", + "css-modules-loader-core": "0.0.11", "object-assign": "^3.0.0", + "string-hash": "^1.1.0", "through": "^2.3.7" }, "devDependencies": {},