From 0e23117558084fefddb37a66d49cfd5112f2d16f Mon Sep 17 00:00:00 2001 From: Slava Z Date: Sun, 31 Jan 2016 01:01:10 +0200 Subject: [PATCH] minor development mode update --- src/index.js | 12 ++++-- test/cache.js | 106 +++++++++++++++++++++++++++++++++++--------------- 2 files changed, 84 insertions(+), 34 deletions(-) diff --git a/src/index.js b/src/index.js index 3938bca..3cb5a18 100644 --- a/src/index.js +++ b/src/index.js @@ -10,7 +10,8 @@ import './guard'; // cache let tokensByFile = {}; -// global +// globals; +let debugMode = process.env.NODE_ENV !== 'development'; let instance = extractor({}, fetch); let processorOptions = {}; let preProcess = identity; @@ -26,7 +27,7 @@ const debugSetup = debug('css-modules:setup'); * @param {string} options.to * @param {object} options.rest */ -export default function setup({ extensions: extraExtensions, preprocessCss, processCss, to, ...rest } = {}) { +export default function setup({ extensions: extraExtensions, preprocessCss, processCss, to, devMode, ...rest } = {}) { debugSetup(arguments[0]); validate(arguments[0]); instance = extractor(rest, fetch); @@ -36,6 +37,11 @@ export default function setup({ extensions: extraExtensions, preprocessCss, proc // clearing cache tokensByFile = {}; + // debug option is preferred NODE_ENV === 'development' + if (typeof devMode !== 'undefined') { + debugMode = devMode; + } + if (extraExtensions) { extraExtensions.forEach((extension) => hook(filename => fetch(filename, filename), extension)); } @@ -69,7 +75,7 @@ function fetch(to, from) { tokens = lazyResult.root.tokens; - if (process.env.NODE_ENV !== 'development') { + if (!debugMode) { // updating cache tokensByFile[filename] = tokens; } else { diff --git a/test/cache.js b/test/cache.js index 9da175c..5329e8e 100644 --- a/test/cache.js +++ b/test/cache.js @@ -11,47 +11,91 @@ function updateFile(content) { } describe('development mode', () => { - describe('should cache calls not in development mode', () => { - before(() => { - hook(); - updateFile('.block\n{\n display: block;\n}'); - process.env.NODE_ENV = ''; - require(fixture); - updateFile('.inline-block\n{\n display: inline-block;\n}'); - }); + describe('shouldn`t calls cache in development mode', () => { + describe('devMode:false options should override NODE_ENV="development"', () => { + before(() => { + hook({ devMode: false }); + updateFile('.block\n{\n display: block;\n}'); + process.env.NODE_ENV = 'development'; + require(fixture); + updateFile('.inline-block\n{\n display: inline-block;\n}'); + }); + + after(() => { + process.env.NODE_ENV = ''; + dropCache(fixture); + }); - after(() => { - process.env.NODE_ENV = ''; - dropCache(fixture); + it('should retrive data from cache', () => { + const tokens = require(fixture); + const keys = Object.keys(tokens); + equal(keys.length, 1); + equal(keys.join(''), 'block'); + }); }); - it('should retrive data from cache', () => { - const tokens = require(fixture); - const keys = Object.keys(tokens); - equal(keys.length, 1); - equal(keys.join(''), 'block'); + describe('should cache calls without any options', () => { + before(() => { + hook(); + updateFile('.block\n{\n display: block;\n}'); + require(fixture); + updateFile('.inline-block\n{\n display: inline-block;\n}'); + }); + + after(() => { + dropCache(fixture); + }); + + it('should retrive data from cache', () => { + const tokens = require(fixture); + const keys = Object.keys(tokens); + equal(keys.length, 1); + equal(keys.join(''), 'block'); + }); }); }); describe('should clear cache in development mode', () => { - before(() => { - hook(); - updateFile('.block\n{\n display: block;\n}'); - process.env.NODE_ENV = 'development'; - require(fixture); - updateFile('.inline-block\n{\n display: inline-block;\n}'); - }); + describe('devMode:true option should works without NODE_ENV="development"', () => { + before(() => { + hook({ devMode: true }); + updateFile('.block\n{\n display: block;\n}'); + require(fixture); + updateFile('.inline-block\n{\n display: inline-block;\n}'); + }); + + after(() => { + dropCache(fixture); + }); - after(() => { - process.env.NODE_ENV = ''; - dropCache(fixture); + it('should retrive data from fs', () => { + const tokens = require(fixture); + const keys = Object.keys(tokens); + equal(keys.length, 1); + equal(keys.join(''), 'inline-block'); + }); }); - it('should retrive data from fs', () => { - const tokens = require(fixture); - const keys = Object.keys(tokens); - equal(keys.length, 1); - equal(keys.join(''), 'inline-block'); + describe('NODE_ENV="development" should works without debug:true option', () => { + before(() => { + hook(); + updateFile('.block\n{\n display: block;\n}'); + process.env.NODE_ENV = 'development'; + require(fixture); + updateFile('.inline-block\n{\n display: inline-block;\n}'); + }); + + after(() => { + process.env.NODE_ENV = ''; + dropCache(fixture); + }); + + it('should retrive data from fs', () => { + const tokens = require(fixture); + const keys = Object.keys(tokens); + equal(keys.length, 1); + equal(keys.join(''), 'inline-block'); + }); }); }); });