diff --git a/index.js b/index.js index 827907d..37b7021 100644 --- a/index.js +++ b/index.js @@ -28,8 +28,8 @@ function generateShortName (name, filename, css) { Custom `generateScopedName` function for `postcss-modules-scope`. Appends a hash of the css source. */ -function generateLongName (name, filename) { - var sanitisedPath = filename.replace(/\.[^\.\/\\]+$/, '') +function generateLongName (name, filename, css, context) { + var sanitisedPath = path.relative(context, filename).replace(/\.[^\.\/\\]+$/, '') .replace(/[\W_]+/g, '_') .replace(/^_|_$/g, ''); @@ -102,46 +102,7 @@ module.exports = function (browserify, options) { var cssOutFilename = options.output || options.o; var jsonOutFilename = options.json || options.jsonOutput; - // PostCSS plugins passed to FileSystemLoader - var plugins = options.use || options.u; - if (!plugins) { - plugins = getDefaultPlugins(options); - } - else { - if (typeof plugins === 'string') { - plugins = [plugins]; - } - } - - var postcssAfter = options.postcssAfter || options.after || []; - plugins = plugins.concat(postcssAfter); - - // load plugins by name (if a string is used) - plugins = plugins.map(function requirePlugin (name) { - // assume functions are already required plugins - if (typeof name === 'function') { - return name; - } - - var plugin = require(require.resolve(name)); - - // custom scoped name generation - if (name === 'postcss-modules-scope') { - options[name] = options[name] || {}; - if (!options[name].generateScopedName) { - options[name].generateScopedName = generateLongName; - } - } - - if (name in options) { - plugin = plugin(options[name]); - } - else { - plugin = plugin.postcss || plugin(); - } - - return plugin; - }); + var processorOptions = {to: options.to}; // the compiled CSS stream needs to be avalible to the transform, // but re-created on each bundle call. @@ -156,11 +117,11 @@ module.exports = function (browserify, options) { // collect visited filenames filenames.push(filename); - var loader = new FileSystemLoader(rootDir, plugins); + var loader = new FileSystemLoader(options, processorOptions); return through(function noop () {}, function end () { var self = this; - loader.fetch(path.relative(rootDir, filename), '/').then(function (tokens) { + loader.fetch(filename, filename, null).then(function (tokens) { var output = 'module.exports = ' + JSON.stringify(tokens); assign(tokensByFile, loader.tokensByFile); diff --git a/package.json b/package.json index f59de1f..574e5ef 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,6 @@ "description": "A browserify transform to load CSS Modules", "main": "index.js", "dependencies": { - "css-modules-loader-core": "^1.0.0", "object-assign": "^3.0.0", "promise-polyfill": "^2.1.0", "string-hash": "^1.1.0", @@ -19,7 +18,9 @@ }, "scripts": { "test": "tape tests/*.js", - "lint": "eslint index.js tests/" + "lint": "eslint index.js tests/", + "preinstall": "rm -rf node_modules/css-modules-loader-core", + "postinstall": "git clone https://github.com/sullenor/css-modules-loader-core.git node_modules/css-modules-loader-core && cd node_modules/css-modules-loader-core && npm i && npm run build" }, "author": "joshwnj", "license": "MIT", diff --git a/tests/cases/compose-node-module/expected.css b/tests/cases/compose-node-module/expected.css index ddd63b1..492da06 100644 --- a/tests/cases/compose-node-module/expected.css +++ b/tests/cases/compose-node-module/expected.css @@ -1,4 +1,4 @@ -._cool_styles_styles__foo { +._node_modules_cool_styles_styles__foo { color: #F00; } ._styles__foo {