diff --git a/src/aliasify.coffee b/src/aliasify.coffee index bcf62d5..fb7b416 100644 --- a/src/aliasify.coffee +++ b/src/aliasify.coffee @@ -13,6 +13,8 @@ getReplacement = (file, aliases, regexps) -> return false else if typeof regexps[key] == "function" return regexps[key](file, key, re) + else if regexps[key]? and regexps[key].relative? + return { relative: file.replace(re, regexps[key].relative) } else return file.replace(re, regexps[key]) diff --git a/test/test.coffee b/test/test.coffee index d9f9abc..fb06a97 100644 --- a/test/test.coffee +++ b/test/test.coffee @@ -112,6 +112,14 @@ describe "aliasify", -> _ = require("underscore"); """) + it "should correctly transform a file-relative regexp replacement", (done) -> + process.chdir testWithRelativeConfigDir + jsFile = path.resolve __dirname, "../testFixtures/regexTestWithFileRelativeConfig/src/index.js" + transformTools.runTransform aliasify, jsFile, (err, result) -> + return done err if err + assert.equal result, "d3 = require('../shims/d3.js');" + done() + it "should work if there are no regexes and no aliases", -> runTestWithConfig { aliases: null diff --git a/testFixtures/regexTestWithFileRelativeConfig/config/config.js b/testFixtures/regexTestWithFileRelativeConfig/config/config.js new file mode 100644 index 0000000..8b75c39 --- /dev/null +++ b/testFixtures/regexTestWithFileRelativeConfig/config/config.js @@ -0,0 +1,7 @@ +module.exports = { + replacements: { + "(.*)": { + relative: "../shims/$1.js" + } + } +} diff --git a/testFixtures/regexTestWithFileRelativeConfig/package.json b/testFixtures/regexTestWithFileRelativeConfig/package.json new file mode 100644 index 0000000..6282b62 --- /dev/null +++ b/testFixtures/regexTestWithFileRelativeConfig/package.json @@ -0,0 +1,3 @@ +{ + "aliasify": "./config/config.js" +} \ No newline at end of file diff --git a/testFixtures/regexTestWithFileRelativeConfig/src/index.js b/testFixtures/regexTestWithFileRelativeConfig/src/index.js new file mode 100644 index 0000000..2219ad6 --- /dev/null +++ b/testFixtures/regexTestWithFileRelativeConfig/src/index.js @@ -0,0 +1 @@ +d3 = require("d3"); \ No newline at end of file