diff --git a/package.json b/package.json index 8dff914..bc2d0fb 100644 --- a/package.json +++ b/package.json @@ -1,8 +1,8 @@ { - "name": "css-modules-require-hook", + "name": "ts-blink-css-modules-require-hook", "version": "4.2.3", "description": "A require hook to compile CSS Modules on the fly", - "main": "lib/index.js", + "main": "src/index.js", "engines": { "node": ">= 4" }, @@ -66,9 +66,7 @@ }, "scripts": { "lint": "eslint src/**/*.js", - "prepublish": "npm run transpile", "pretest": "npm run transpile", - "test": "NODE_PATH=$(pwd)/test/tokens/node_modules mocha --require test/setup.js --ui tdd test/*/*.js --compilers js:babel-register", - "transpile": "gulp --cwd . --gulpfile scripts/gulpfile.js transpile" + "test": "NODE_PATH=$(pwd)/test/tokens/node_modules mocha --require test/setup.js --ui tdd test/*/*.js --compilers js:babel-register" } } diff --git a/src/index.js b/src/index.js index 8d4afae..3c15b87 100644 --- a/src/index.js +++ b/src/index.js @@ -21,7 +21,7 @@ const debugFetch = require('debug')('css-modules:fetch'); const debugSetup = require('debug')('css-modules:setup'); module.exports = function setupHook({ - camelCase, + transformOpts, devMode, extensions = '.css', ignore, @@ -124,7 +124,7 @@ module.exports = function setupHook({ const hook = filename => { const tokens = fetch(filename, filename); - return camelCase ? transformTokens(tokens, camelCase) : tokens; + return transformOpts ? transformTokens(tokens, transformOpts) : tokens; }; // @todo add possibility to specify particular config for each extension diff --git a/src/transformTokens.js b/src/transformTokens.js index aadbd1b..3447895 100644 --- a/src/transformTokens.js +++ b/src/transformTokens.js @@ -41,10 +41,15 @@ function camelizeDashes(str) { /** * @param {object} tokens - * @param {boolean|string} camelCase 'dashes|dashesOnly|only' + * @param {object} transformOps + * @param {boolean|string} transformOps.camelCase 'dashes|dashesOnly|only' + * @param {boolean} transformOps.transformClassesToSelectors * @return {object} */ -function transformTokens(tokens, camelCase) { +function transformTokens(tokens, {camelCase, transformClassesToSelectors}) { + if (typeof tokens === 'object' && transformClassesToSelectors) + Object.keys(tokens).forEach(key => tokens[key] = `.${tokens[key]}`); + switch (camelCase) { case true: return reduce(tokens, camelizeKeys, assign({}, tokens)); @@ -57,6 +62,8 @@ function transformTokens(tokens, camelCase) { case 'only': return reduce(tokens, camelizeOnlyKeys, {}); + default: + // do nothing } return tokens; diff --git a/src/validate.js b/src/validate.js index ba34ca7..460f541 100644 --- a/src/validate.js +++ b/src/validate.js @@ -14,7 +14,7 @@ const { const rules = { // hook - camelCase: 'boolean|string', + transformOpts: 'object', devMode: 'boolean', extensions: 'array|string', ignore: 'function|regex|string',