Browse Source

Merge pull request #695 from rollup/gh-692-redux

undo non-string ID change
ghi-672
Rich Harris 8 years ago
parent
commit
dc19f98079
  1. 76
      src/Bundle.js
  2. 10
      src/Module.js
  3. 15
      test/function/custom-resolver-non-string/_config.js
  4. 2
      test/function/custom-resolver-non-string/main.js

76
src/Bundle.js

@ -198,53 +198,47 @@ export default class Bundle {
return mapSequence( module.sources, source => {
return this.resolveId( source, module.id )
.then( resolvedId => {
module.resolvedIds[ source ] = resolvedId;
if ( !resolvedId || typeof resolvedId === 'string' ) {
let externalName;
if ( resolvedId ) {
// If the `resolvedId` is supposed to be external, make it so.
externalName = resolvedId.replace( /[\/\\]/g, '/' );
} else if ( isRelative( source ) ) {
// This could be an external, relative dependency, based on the current module's parent dir.
externalName = resolve( module.id, '..', source );
}
const forcedExternal = externalName && this.isExternal( externalName );
if ( !resolvedId || forcedExternal ) {
let normalizedExternal = source;
if ( !forcedExternal ) {
if ( isRelative( source ) ) throw new Error( `Could not resolve ${source} from ${module.id}` );
if ( !this.isExternal( source ) ) this.onwarn( `Treating '${source}' as external dependency` );
} else if ( resolvedId ) {
if ( isRelative(resolvedId) || isAbsolute(resolvedId) ) {
// Try to deduce relative path from entry dir if resolvedId is defined as a relative path.
normalizedExternal = this.getPathRelativeToEntryDirname( resolvedId );
} else {
normalizedExternal = resolvedId;
}
}
// overwrite existing
module.resolvedIds[ source ] = normalizedExternal;
if ( !this.moduleById.has( normalizedExternal ) ) {
const module = new ExternalModule( normalizedExternal );
this.externalModules.push( module );
this.moduleById.set( normalizedExternal, module );
let externalName;
if ( resolvedId ) {
// If the `resolvedId` is supposed to be external, make it so.
externalName = resolvedId.replace( /[\/\\]/g, '/' );
} else if ( isRelative( source ) ) {
// This could be an external, relative dependency, based on the current module's parent dir.
externalName = resolve( module.id, '..', source );
}
const forcedExternal = externalName && this.isExternal( externalName );
if ( !resolvedId || forcedExternal ) {
let normalizedExternal = source;
if ( !forcedExternal ) {
if ( isRelative( source ) ) throw new Error( `Could not resolve ${source} from ${module.id}` );
if ( !this.isExternal( source ) ) this.onwarn( `Treating '${source}' as external dependency` );
} else if ( resolvedId ) {
if ( isRelative(resolvedId) || isAbsolute(resolvedId) ) {
// Try to deduce relative path from entry dir if resolvedId is defined as a relative path.
normalizedExternal = this.getPathRelativeToEntryDirname( resolvedId );
} else {
normalizedExternal = resolvedId;
}
}
module.resolvedIds[ source ] = normalizedExternal;
return null;
if ( !this.moduleById.has( normalizedExternal ) ) {
const module = new ExternalModule( normalizedExternal );
this.externalModules.push( module );
this.moduleById.set( normalizedExternal, module );
}
}
if ( resolvedId === module.id ) {
throw new Error( `A module cannot import itself (${resolvedId})` );
}
else {
if ( resolvedId === module.id ) {
throw new Error( `A module cannot import itself (${resolvedId})` );
}
return this.fetchModule( resolvedId, module.id );
module.resolvedIds[ source ] = resolvedId;
return this.fetchModule( resolvedId, module.id );
}
});
});
}

10
src/Module.js

@ -191,14 +191,10 @@ export default class Module {
}
basename () {
if ( typeof this.id === 'string' ) {
const base = basename( this.id );
const ext = extname( this.id );
const base = basename( this.id );
const ext = extname( this.id );
return makeLegalIdentifier( ext ? base.slice( 0, -ext.length ) : base );
}
return 'module';
return makeLegalIdentifier( ext ? base.slice( 0, -ext.length ) : base );
}
bindAliases () {

15
test/function/custom-resolver-non-string/_config.js

@ -1,15 +0,0 @@
const FOO = {};
module.exports = {
description: 'allows resolveId to return a non-string',
options: {
plugins: [{
resolveId: importee => {
if ( importee === 'foo' ) return FOO;
},
load: id => {
if ( id === FOO ) return 'export default 42';
}
}]
}
};

2
test/function/custom-resolver-non-string/main.js

@ -1,2 +0,0 @@
import foo from 'foo';
assert.equal( foo, 42 );
Loading…
Cancel
Save