premodules-loader
Advanced tools
Comparing version 0.0.4 to 0.0.5
'use strict'; | ||
const cacheMap = new Map(); | ||
const stripOutputLoader = require.resolve('./strip-output-loader'); | ||
const formatLoaders = (source) => { | ||
if (!source) return []; | ||
if (source instanceof Array) return source; | ||
return source.split('!'); | ||
}; | ||
module.exports = function getLoaders(context) { | ||
@@ -12,4 +20,3 @@ let res = ''; | ||
.filter(config => | ||
config.loaders && | ||
config.loaders.some(loader => loader.match('premodules') || loader.match('css')) | ||
formatLoaders(config.loaders).some(loader => loader.match('premodules')) | ||
) | ||
@@ -32,8 +39,9 @@ .forEach(config => { | ||
const rawLoaders = typeof config.loaders === 'string' ? config.loaders : config.loaders.join('!'); | ||
// strip style loader | ||
const loaders = rawLoaders.replace(/^.*style!/, ''); | ||
const loaders = formatLoaders(config.loaders).filter(l => !/^style/.test(l)); | ||
cacheMap.set(rules, loaders); | ||
// prepend strip-output loader | ||
loaders.unshift(stripOutputLoader); | ||
cacheMap.set(rules, loaders.join('!')); | ||
}); | ||
@@ -45,6 +53,11 @@ } | ||
const matched = rules.test.test(resourcePath) && | ||
rules.include.some(r => { | ||
let matched = true; | ||
matched &= rules.test.test(resourcePath); | ||
if (rules.include.length) { | ||
matched &= rules.include.some(r => { | ||
return resourcePath.match(r); | ||
}); | ||
} | ||
@@ -51,0 +64,0 @@ if (matched) res = loaders; |
@@ -13,3 +13,2 @@ /** | ||
const getLoaders = require('./get-loaders'); | ||
const loadModule = require('./load-module'); | ||
@@ -24,10 +23,2 @@ const getPath = (src, cwd) => { | ||
const parseOutput = (str) => { | ||
const matches = str.match(regex.output); | ||
if (!matches) return null; | ||
return JSON.parse(matches[1]); | ||
}; | ||
const scssTransformer = (varName, hash) => { | ||
@@ -73,3 +64,3 @@ if (!hash) return ''; | ||
loadModule(this, `!!${loaders}!${src}`, (err, output) => { | ||
this.loadModule(`!!${loaders}!${src}`, (err, output) => { | ||
clearTimeout(timer); | ||
@@ -79,3 +70,3 @@ | ||
const result = parseOutput(output); | ||
const result = this.exec(output, src); | ||
store.resolved[src] = result; // keep newest | ||
@@ -82,0 +73,0 @@ |
{ | ||
"name": "premodules-loader", | ||
"version": "0.0.4", | ||
"version": "0.0.5", | ||
"description": "Share css-modules compiled class names over pre-processers", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
10349
227