From 3f69b919a5a31e618423c03ed056413eb3e0c84e Mon Sep 17 00:00:00 2001 From: Artem Sapegin Date: Fri, 11 Sep 2015 10:22:18 +0200 Subject: [PATCH] Fix extension option when used with custom plugins list. --- src/index.js | 14 +++++++------- test/common-test-cases.js | 11 +++++++++-- test/test-cases/extra-extension/source.scss | 2 +- 3 files changed, 17 insertions(+), 10 deletions(-) diff --git a/src/index.js b/src/index.js index d498aed..21e9893 100644 --- a/src/index.js +++ b/src/index.js @@ -45,6 +45,13 @@ export default function setup(opts = {}) { // https://github.com/postcss/postcss/blob/master/docs/api.md#processorprocesscss-opts lazyResultOpts = pick(opts, ['to']); + const extraExtensions = get('extensions', null, 'array', opts); + if (extraExtensions) { + extraExtensions.forEach((extension) => { + hook(filename => fetch(filename, filename), extension); + }); + } + const customPlugins = get('use', ['u'], 'array', opts); if (customPlugins) { return void (plugins = customPlugins); @@ -66,13 +73,6 @@ export default function setup(opts = {}) { plugins.push(generateScopedName ? new Scope({generateScopedName: opts.generateScopedName}) : Scope); - - const extraExtensions = get('extensions', null, 'array', opts); - if (extraExtensions) { - extraExtensions.forEach((extension) => { - hook(filename => fetch(filename, filename), extension); - }); - } } /** diff --git a/test/common-test-cases.js b/test/common-test-cases.js index 4e43a93..eb0babb 100644 --- a/test/common-test-cases.js +++ b/test/common-test-cases.js @@ -2,6 +2,9 @@ import { equal } from 'assert'; import { readFileSync } from 'fs'; import { resolve } from 'path'; import { extend } from 'lodash'; +import ExtractImports from 'postcss-modules-extract-imports'; +import LocalByDefault from 'postcss-modules-local-by-default'; +import Scope from 'postcss-modules-scope'; import FileSystemLoader from 'css-modules-loader-core/lib/file-system-loader'; import hook from '../src'; @@ -219,10 +222,14 @@ describe('common-test-cases', () => { }); }); - describe('extra extension', () => { + describe('extra extension with custom plugins', () => { before(() => { expectedTokens = JSON.parse(readFileSync(resolve('test/test-cases/extra-extension/expected.json'), 'utf8')); - hook({extensions: ['.scss']}) + hook({extensions: ['.scss'], use: [ + ExtractImports, + LocalByDefault, + Scope, + ]}); }); it('require-hook', () => { diff --git a/test/test-cases/extra-extension/source.scss b/test/test-cases/extra-extension/source.scss index ead2b7a..cc61ab6 100644 --- a/test/test-cases/extra-extension/source.scss +++ b/test/test-cases/extra-extension/source.scss @@ -1,4 +1,4 @@ -$color: orange; +$color: #c0ffee; .localName { color: $color;