jest-webpack-alias
Advanced tools
Comparing version 1.2.1 to 1.2.2
@@ -0,0 +0,0 @@ |
@@ -0,0 +0,0 @@ var _ = require('lodash'); |
@@ -11,2 +11,3 @@ var _ = require('lodash'); | ||
var defaultAliases = {}; | ||
var defaultFallbackDirs = []; | ||
@@ -16,2 +17,3 @@ var defaultFileExtensions = ['', '.webpack.js', '.web.js', '.js']; | ||
var aliases; | ||
var fileExtensions; | ||
@@ -30,2 +32,3 @@ var moduleDirs; | ||
var webpackDir = path.dirname(webpackSettings.file); | ||
aliases = resolveConfig.alias || defaultAliases; | ||
fileExtensions = resolveConfig.extensions || defaultFileExtensions; | ||
@@ -54,2 +57,15 @@ | ||
function matchAlias(dependency) { | ||
var alias = aliases[dependency]; | ||
if (alias) { | ||
var dirname = firstDir(alias); | ||
return { | ||
dirname: dirname, | ||
rest: alias.slice(dirname.length + 1) | ||
}; | ||
} else { | ||
return undefined; | ||
} | ||
} | ||
function resolveExtension(matchingFirstDir, afterFirstDir) { | ||
@@ -108,2 +124,9 @@ var absMatch = afterFirstDir ? path.join(matchingFirstDir, afterFirstDir) : matchingFirstDir; | ||
var alias = matchAlias(dirname); | ||
if (alias) { | ||
dirname = alias.dirname; | ||
rest = alias.rest || rest; | ||
dependency = dirname + (rest ? '/' + rest : ''); | ||
} | ||
var matchingFirstDir = resolveFirstDir(dirname, rest); | ||
@@ -110,0 +133,0 @@ if (!matchingFirstDir.dir || _.contains(nodeModulesDirs, matchingFirstDir.dir)) { |
{ | ||
"name": "jest-webpack-alias", | ||
"version": "1.2.1", | ||
"version": "1.2.2", | ||
"description": "Preprocessor for Jest that is able to resolve require() statements using webpack aliases.", | ||
@@ -5,0 +5,0 @@ "main": "lib/preprocessor.js", |
@@ -66,3 +66,3 @@ # jest-webpack-alias | ||
- The webpack `resolve.alias` setting (ironically, given package name) | ||
- `resolve.alias` settings whose values are absolute paths | ||
@@ -69,0 +69,0 @@ ## License |
@@ -7,7 +7,7 @@ var rewire = require('rewire'); | ||
'/top': ['node_modules', 'package.json', 'src', 'test', 'web_modules', 'webpack.config.js'], | ||
'/top/node_modules': ['node1', 'node2'], | ||
'/top/node_modules': ['aliasNodeFileDest.js', 'node1', 'node2'], | ||
'/top/node_modules/node1': ['lib'], | ||
'/top/node_modules/node1/lib': ['submodule.js'], | ||
'/top/web_modules': ['web1', 'web2.jsx'], | ||
'/top/src': ['dir1', 'dir2'], | ||
'/top/src': ['aliasRelative.js', 'dir1', 'dir2'], | ||
'/top/src/dir1': ['lib1a.js', 'lib1b-2b.js', 'dir1-1'], | ||
@@ -29,3 +29,6 @@ '/top/src/dir1/dir1-1': ['lib1-1a.js'], | ||
alias: { | ||
aliasSrc: 'aliasDest' | ||
aliasNodeSubdir1Src: 'node1', | ||
aliasNodeSubdir2Src: 'node1/lib/submodule', | ||
aliasNodeFileSrc: 'aliasNodeFileDest', | ||
aliasPlainSubdirSrc: 'dir1/lib1a' | ||
} | ||
@@ -32,0 +35,0 @@ } |
@@ -23,7 +23,9 @@ var expect = require('./lib/expect'); | ||
expect(dirHas).to.be.called; | ||
expect(dirHas.args).to.have.length(expected.length); | ||
for (var i = 0; i < expected.length; i++) { | ||
expect(unwin(dirHas.args[i][0])).to.eq(expected[i][0]); | ||
expect(dirHas.args[i][1]).to.eq(expected[i][1]); | ||
if (dirHas.args[i] && expected[i]) { | ||
expect(unwin(dirHas.args[i][0]), 'call ' + i).to.eq(expected[i][0]); | ||
expect(dirHas.args[i][1], 'call ' + i).to.eq(expected[i][1]); | ||
} | ||
} | ||
expect(dirHas.args).to.have.length(expected.length); | ||
} | ||
@@ -33,6 +35,8 @@ | ||
expect(fs.existsSync).to.be.called; | ||
expect(fs.existsSync.args).to.have.length(expected.length); | ||
for (var i = 0; i < expected.length; i++) { | ||
expect(unwin(fs.existsSync.args[i][0])).to.eq(expected[i][0]); | ||
if (fs.existsSync.args[i] && expected[i]) { | ||
expect(unwin(fs.existsSync.args[i][0]), 'call ' + i).to.eq(expected[i][0]); | ||
} | ||
} | ||
expect(fs.existsSync.args).to.have.length(expected.length); | ||
} | ||
@@ -229,2 +233,69 @@ | ||
}); | ||
describe('with alias', function() { | ||
beforeEach(function() { | ||
filename = '/top/test/file1.test.js'; | ||
}); | ||
describe('with destination of node_modules', function() { | ||
it('applies alias to simple paths with no extension change', function() { | ||
var src = "var lib1a = require('aliasNodeFileSrc');"; | ||
var output = webpackAlias.process(src, filename); | ||
verifyDirHas([ | ||
['/top/src', 'aliasNodeFileDest'], | ||
['/top/src', 'aliasNodeFileDest.js'], | ||
['/top/src', 'aliasNodeFileDest.jsx'], | ||
['/top/node_modules', 'aliasNodeFileDest'], | ||
['/top/node_modules', 'aliasNodeFileDest.js'] | ||
]); | ||
expect(output).to.eq("var lib1a = require('aliasNodeFileDest');"); | ||
}); | ||
it('applies alias to subdir paths', function() { | ||
var src = "var lib1a = require('aliasNodeSubdir1Src/lib/submodule');"; | ||
var output = webpackAlias.process(src, filename); | ||
verifyDirHas([ | ||
['/top/src', 'node1'], | ||
['/top/node_modules', 'node1'] | ||
]); | ||
expect(output).to.eq("var lib1a = require('node1/lib/submodule');"); | ||
}); | ||
it('replaces subdir paths with alias destination', function() { | ||
var src = "var lib1a = require('aliasNodeSubdir2Src/ignore/this');"; | ||
var output = webpackAlias.process(src, filename); | ||
verifyDirHas([ | ||
['/top/src', 'node1'], | ||
['/top/node_modules', 'node1'] | ||
]); | ||
expect(output).to.eq("var lib1a = require('node1/lib/submodule');"); | ||
}); | ||
}); | ||
it('applies alias to subdir paths', function() { | ||
var src = "var lib1a = require('aliasPlainSubdirSrc');"; | ||
var output = webpackAlias.process(src, filename); | ||
verifyDirHas([ | ||
['/top/src', 'dir1'], | ||
['/top/src/dir1', 'lib1a'], | ||
['/top/src/dir1', 'lib1a.js'] | ||
]); | ||
expect(output).to.eq("var lib1a = require('../src/dir1/lib1a.js');"); | ||
}); | ||
it('does not apply alias transformation to relative paths', function() { | ||
var src = "var lib1a = require('../src/aliasRelative');"; | ||
var output = webpackAlias.process(src, filename); | ||
verifyDirHas([ | ||
['/top/src', 'aliasRelative'], | ||
['/top/src', 'aliasRelative.js'] | ||
]); | ||
expect(output).to.eq("var lib1a = require('../src/aliasRelative.js');"); | ||
}); | ||
}); | ||
}); |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
24450
604