Last active
May 13, 2017 16:50
-
-
Save sonhanguyen/c798a48105a8ff20b2a322f0df5cd931 to your computer and use it in GitHub Desktop.
make jest behave using (webpack) loader-runner
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const deasync = require('deasync') | |
const runLoaders = deasync(require('loader-runner').runLoaders) | |
const { module: { rules } } = config = require('./webpack.base') | |
const fs = require('fs') | |
const resolveLoader = req => { | |
let loader = req | |
req = ~req.indexOf`?` | |
if (req) { | |
const index = ~req | |
req = loader.substring(index) | |
loader = loader.substring(0, index) | |
} | |
return require.resolve(loader) + (req || '') | |
} | |
exports.process = (src, resource) => { | |
try { | |
if (/node_modules/.test(resource)) return src | |
let use, loaders = (rules || config.module.loaders) | |
.find(({ test }) => resource.match(test)) | |
if (loaders) ({ use, loaders = use } = loaders); else return src | |
loaders = typeof loaders == 'string' | |
? [ resolveLoader(loaders) ] | |
: loaders.map(({ options, loader }, key) => loader | |
? { loader: require.resolve(loader), options } | |
: resolveLoader(loaders[key]) | |
) | |
const { result } = runLoaders({ resource, loaders, readResource: fs.readFile.bind(fs) }) | |
return result[0] | |
} | |
catch (e) { console.error(e) } | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment