absolute-module-mapper-plugin
Advanced tools
Comparing version 1.2.4 to 1.3.0
@@ -10,4 +10,34 @@ /** | ||
const fs = require('fs') | ||
const {ResolverFactory, CachedInputFileSystem} = resolve; | ||
const { ResolverFactory, CachedInputFileSystem } = resolve | ||
const plugin = { | ||
apply(resolver) { | ||
const registerHook = name => { | ||
resolver.getHook(name).tapAsync('AbsoluteModuleMapperPlugin', (request, resolveContext, callback) => { | ||
console.log('name', name) | ||
console.log('request', request) | ||
console.log('resolveContext', resolveContext) | ||
callback() | ||
}) | ||
} | ||
registerHook("resolve"); | ||
registerHook("parsedResolve"); | ||
registerHook("describedResolve"); | ||
registerHook("rawModule"); | ||
registerHook("module"); | ||
registerHook("relative"); | ||
registerHook("describedRelative"); | ||
registerHook("directory"); | ||
registerHook("existingDirectory"); | ||
registerHook("undescribedRawFile"); | ||
registerHook("rawFile"); | ||
registerHook("file"); | ||
registerHook("existingFile"); | ||
registerHook("resolved"); | ||
} | ||
} | ||
const sync = resolve.create.sync({ | ||
@@ -20,3 +50,3 @@ plugins: [new AbsoluteModuleMapperPlugin()] | ||
fileSystem: new CachedInputFileSystem(fs, 4000), | ||
extensions: [".js", ".json"], | ||
extensions: ['.js', '.json'] | ||
} | ||
@@ -26,112 +56,139 @@ | ||
it('simple case', function() { | ||
expect(sync(fixture(''), './module')).toBe( | ||
fixture('module/index.js') | ||
) | ||
expect(sync(fixture(''), './module')).toBe(fixture('module/index.js')) | ||
}) | ||
it('should mapper', function () { | ||
it('should mapper', function() { | ||
const resolver = ResolverFactory.createResolver({ | ||
...resolverOptions, | ||
plugins: [new AbsoluteModuleMapperPlugin({ | ||
root: fixture(''), | ||
silent: false, | ||
mapper: { | ||
'^<root>/module/(\\w+)': '<root>/to/$1' | ||
} | ||
})] | ||
plugins: [ | ||
new AbsoluteModuleMapperPlugin({ | ||
root: fixture(''), | ||
silent: false, | ||
mapper: { | ||
'^<root>/module/(\\w+)': '<root>/to/$1' | ||
} | ||
}), | ||
] | ||
}) | ||
const path = resolver.resolveSync({ | ||
issuer: fixture('module/index.js') | ||
}, fixture('module'), './a.js') | ||
const path = resolver.resolveSync( | ||
{ | ||
issuer: fixture('module/index.js') | ||
}, | ||
fixture('module'), | ||
'./a.js?query' | ||
) | ||
expect(path).toBe(fixture('to/a.js')) | ||
}); | ||
expect(path).toBe(fixture('to/a.js?query')) | ||
}) | ||
it('should mapper exclude node_modules', function () { | ||
it('should mapper exclude node_modules', function() { | ||
const resolver = ResolverFactory.createResolver({ | ||
...resolverOptions, | ||
plugins: [new AbsoluteModuleMapperPlugin({ | ||
root: fixture(''), | ||
silent: false, | ||
// include: [ | ||
// '**{,/}!node_modules{,/}**' | ||
// ], | ||
exclude: [ | ||
'**/node_modules/**' | ||
], | ||
mapper: { | ||
'^<root>/module/(\\w+)': '<root>/to/$1' | ||
} | ||
})] | ||
plugins: [ | ||
new AbsoluteModuleMapperPlugin({ | ||
root: fixture(''), | ||
silent: false, | ||
// include: [ | ||
// '**{,/}!node_modules{,/}**' | ||
// ], | ||
exclude: ['**/node_modules/**'], | ||
mapper: { | ||
'^<root>/module/(\\w+)': '<root>/to/$1' | ||
} | ||
}) | ||
] | ||
}) | ||
const path = resolver.resolveSync({ | ||
issuer: fixture('node_modules/index.js') | ||
}, fixture('module'), './a.js') | ||
const path = resolver.resolveSync( | ||
{ | ||
issuer: fixture('node_modules/index.js') | ||
}, | ||
fixture('module'), | ||
'./a.js' | ||
) | ||
expect(path).toBe(fixture('module/a.js')) | ||
}); | ||
}) | ||
it('should mapper async', function (done) { | ||
it('should mapper async', function(done) { | ||
const resolver = ResolverFactory.createResolver({ | ||
...resolverOptions, | ||
plugins: [new AbsoluteModuleMapperPlugin({ | ||
root: fixture(''), | ||
silent: false, | ||
mapper: (path, ctx, cb) => { | ||
cb(null, path.replace(new RegExp('/module/(\\w+)'), '/to/$1')) | ||
} | ||
})] | ||
plugins: [ | ||
new AbsoluteModuleMapperPlugin({ | ||
root: fixture(''), | ||
silent: false, | ||
mapper: (path, ctx, cb) => { | ||
cb(null, path.replace(new RegExp('/module/(\\w+)'), '/to/$1')) | ||
} | ||
}) | ||
] | ||
}) | ||
resolver.resolve({ | ||
issuer: fixture('module/index.js') | ||
}, fixture('module'), './a.js', {}, (err, result) => { | ||
expect(result).toBe(fixture('to/a.js')) | ||
done(err) | ||
}) | ||
}); | ||
resolver.resolve( | ||
{ | ||
issuer: fixture('module/index.js') | ||
}, | ||
fixture('module'), | ||
'./a.js?query', | ||
{}, | ||
(err, result) => { | ||
expect(result).toBe(fixture('to/a.js?query')) | ||
done(err) | ||
} | ||
) | ||
}) | ||
it('should requestMapper', function () { | ||
it('should requestMapper', function() { | ||
const resolver = ResolverFactory.createResolver({ | ||
...resolverOptions, | ||
plugins: [new AbsoluteModuleMapperPlugin({ | ||
root: fixture(''), | ||
silent: false, | ||
requestMapper: { | ||
'^./a.js': '<root>/to/b.js' | ||
} | ||
})] | ||
plugins: [ | ||
new AbsoluteModuleMapperPlugin({ | ||
root: fixture(''), | ||
silent: false, | ||
requestMapper: { | ||
'^./a.js': '<root>/to/b.js' | ||
} | ||
}) | ||
] | ||
}) | ||
const path = resolver.resolveSync({ | ||
issuer: fixture('module/index.js') | ||
}, fixture('module'), './a.js') | ||
const path = resolver.resolveSync( | ||
{ | ||
issuer: fixture('module/index.js') | ||
}, | ||
fixture('module'), | ||
'./a.js?query' | ||
) | ||
expect(path).toBe(fixture('to/b.js')) | ||
}); | ||
expect(path).toBe(fixture('to/b.js?query')) | ||
}) | ||
it('should mapper & requestMapper', function () { | ||
it('should mapper & requestMapper', function() { | ||
const resolver = ResolverFactory.createResolver({ | ||
...resolverOptions, | ||
plugins: [new AbsoluteModuleMapperPlugin({ | ||
root: fixture(''), | ||
silent: false, | ||
requestMapper: { | ||
'^./a.js': '<root>/module/b.js' | ||
}, | ||
mapper: { | ||
'^<root>/module/(\\w+)': '<root>/to/$1' | ||
} | ||
})] | ||
plugins: [ | ||
new AbsoluteModuleMapperPlugin({ | ||
root: fixture(''), | ||
silent: false, | ||
requestMapper: { | ||
'^./a.js': '<root>/module/b.js' | ||
}, | ||
mapper: { | ||
'^<root>/module/(\\w+)': '<root>/to/$1' | ||
} | ||
}) | ||
] | ||
}) | ||
const path = resolver.resolveSync({ | ||
issuer: fixture('module/index.js') | ||
}, fixture('module'), './a.js') | ||
const path = resolver.resolveSync( | ||
{ | ||
issuer: fixture('module/index.js') | ||
}, | ||
fixture('module'), | ||
'./a.js' | ||
) | ||
expect(path).toBe(fixture('to/b.js')) | ||
}); | ||
}) | ||
}) |
@@ -0,1 +1,5 @@ | ||
# [1.3.0](https://github.com/imcuttle/absolute-module-mapper-plugin/compare/v1.2.4...v1.3.0) (2020-02-16) | ||
## [1.2.4](https://github.com/imcuttle/absolute-module-mapper-plugin/compare/v1.2.3...v1.2.4) (2020-02-13) | ||
@@ -2,0 +6,0 @@ |
@@ -104,4 +104,3 @@ /** | ||
if (requestMapper) { | ||
const requestTarget = resolver.ensureHook('parsedResolve') | ||
resolver.getHook('resolve').tapAsync('AbsoluteModuleMapperPlugin', (request, resolveContext, callback) => { | ||
resolver.getHook('parsedResolve').tapAsync('AbsoluteModuleMapperPlugin', (request, resolveContext, callback) => { | ||
const from = request.context.issuer | ||
@@ -130,3 +129,2 @@ if (from && isMatch(include, from) && !isMatch(exclude, from)) { | ||
if (mapper) { | ||
const target = resolver.ensureHook('resolved') | ||
resolver.getHook('existingFile').tapAsync('AbsoluteModuleMapperPlugin', (request, resolveContext, callback) => { | ||
@@ -133,0 +131,0 @@ const from = request.context.issuer |
{ | ||
"name": "absolute-module-mapper-plugin", | ||
"version": "1.2.4", | ||
"version": "1.3.0", | ||
"main": "index.js", | ||
@@ -5,0 +5,0 @@ "description": "The plugin on enhanced-resolver to map module path", |
17739
331