diff --git a/packages/sol-compiler/CHANGELOG.json b/packages/sol-compiler/CHANGELOG.json index e9274f64eb..490e88d22a 100644 --- a/packages/sol-compiler/CHANGELOG.json +++ b/packages/sol-compiler/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "version": "1.1.15", + "changes": [ + { + "note": "Fix an issue when we tried to append base contracts path to absolute imports (NPM)", + "pr": 1311 + } + ] + }, { "timestamp": 1543401373, "version": "1.1.14", diff --git a/packages/sol-compiler/src/compiler.ts b/packages/sol-compiler/src/compiler.ts index 8ee7fa4a91..c5b6497df6 100644 --- a/packages/sol-compiler/src/compiler.ts +++ b/packages/sol-compiler/src/compiler.ts @@ -394,7 +394,14 @@ export class Compiler { // const lastPathSeparatorPos = contractPath.lastIndexOf('/'); const contractFolder = lastPathSeparatorPos === -1 ? '' : contractPath.slice(0, lastPathSeparatorPos + 1); - importPath = path.resolve('/' + contractFolder, importPath).replace('/', ''); + if (importPath.startsWith('.')) { + /** + * Some imports path are relative ("../Token.sol", "./Wallet.sol") + * while others are absolute ("Token.sol", "@0x/contracts/Wallet.sol") + * And we need to do the hack mentooned above only for relative imports. + */ + importPath = path.resolve('/' + contractFolder, importPath).replace('/', ''); + } if (_.isUndefined(sourcesToAppendTo[importPath])) { sourcesToAppendTo[importPath] = { id: fullSources[importPath].id };