UNPKG

babel-plugin-root-require

Version:

Transforms require module paths that have a prefix referring to the project root. Also works on `require.resolve`.

100 lines (89 loc) 2.48 kB
const test = require('tape') const {transform} = require('babel-core') const plugin = require('../') const plugins = [plugin] test('does not transform other functions', t => { t.plan(1) const code = 'foo("bar");' const result = transform(code, { plugins }) t.equal(result.code, code) }) test('does not transform require when there is no argument to require', t => { t.plan(1) const code = 'require();' const result = transform(code, { plugins }) t.equal(result.code, code) }) test('does not transform require when code is not from a file', t => { t.plan(1) const code = 'require("./foo");' const result = transform(code, { plugins }) t.equal(result.code, code) }) test('does not transform require when starts with variable', t => { t.plan(1) const code = 'require(myVar + "/foo");' const result = transform(code, { filename: 'foo/bar.js', plugins }) t.equal(result.code, code) }) test('does not transform require when path is not prefixed', t => { t.plan(1) const code = 'require("./foo");' const result = transform(code, { filename: 'foo/bar.js', plugins }) t.equal(result.code, code) }) test('does not transform prefix followed by character that is not a slash', t => { t.plan(1) const code = 'require("~foo");' const result = transform(code, { filename: 'foo/bar.js', plugins }) t.equal(result.code, code) }) test('does not transform resolve function that is not an object property', t => { t.plan(1) const result = transform('resolve("~/foo");', { filename: 'file.js', plugins }) t.equal(result.code, 'resolve("~/foo");') }) test('does not transform resolve function when it is a property of a different object', t => { t.plan(1) const result = transform('notRequire.resolve("~/foo");', { filename: 'file.js', plugins }) t.equal(result.code, 'notRequire.resolve("~/foo");') }) test('does not transform require that is not the global require', t => { t.plan(1) const code = 'const require = () => {};\nrequire("~/foo");' const result = transform(code, { filename: 'file.js', plugins }) t.equal(result.code, code) }) test('does not transform require.resolve that is not the global require', t => { t.plan(1) const code = 'const require = () => {};\nrequire.resolve = () => {};\nrequire.resolve("~/foo");' const result = transform(code, { filename: 'file.js', plugins }) t.equal(result.code, code) })