Skip to content

Commit

Permalink
Breaking: Ensure babel ignores non-.babel.js/ts/jsx files & enable up…
Browse files Browse the repository at this point in the history
…ward-optional mode (fixes #39, #41, #54) (#58)

* babel must now ignore files not ending by babel.js (inspired from @cspotcode branch, PR #41 extending ignoring to everywhere babel register is called)
* @babel/register now uses upward-optional mode
  • Loading branch information
ilan-schemoul authored and phated committed Oct 16, 2019
1 parent f6bb2b7 commit 7e2683b
Show file tree
Hide file tree
Showing 2 changed files with 59 additions and 14 deletions.
71 changes: 58 additions & 13 deletions index.js
@@ -1,37 +1,61 @@
var path = require('path');

var endsInBabelJs = /\.babel\.[jt]s(x)$/;

function ignoreNonBabelAndNodeModules(file) {
return !endsInBabelJs.test(file) &&
path.relative(process.cwd(), file).split(path.sep).indexOf('node_modules') >= 0;
}

var extensions = {
'.babel.js': [
{
module: '@babel/register',
register: function(hook) {
// register on .js extension due to https://github.com/joyent/node/blob/v0.12.0/lib/module.js#L353
// which only captures the final extension (.babel.js -> .js)
hook({ extensions: '.js' });
hook({
extensions: '.js',
rootMode: 'upward-optional',
ignore: [ignoreNonBabelAndNodeModules],
});
},
},
{
module: 'babel-register',
register: function(hook) {
hook({ extensions: '.js' });
hook({
extensions: '.js',
ignore: ignoreNonBabelAndNodeModules,
});
},
},
{
module: 'babel-core/register',
register: function(hook) {
hook({ extensions: '.js' });
hook({
extensions: '.js',
ignore: ignoreNonBabelAndNodeModules,
});
},
},
{
module: 'babel/register',
register: function(hook) {
hook({ extensions: '.js' });
hook({
extensions: '.js',
ignore: ignoreNonBabelAndNodeModules,
});
},
},
],
'.babel.ts': [
{
module: '@babel/register',
register: function(hook) {
hook({ extensions: '.ts' });
hook({
extensions: '.ts',
rootMode: 'upward-optional',
ignore: [ignoreNonBabelAndNodeModules],
});
},
},
],
Expand Down Expand Up @@ -62,25 +86,38 @@ var extensions = {
{
module: '@babel/register',
register: function(hook) {
hook({ extensions: '.jsx' });
hook({
extensions: '.jsx',
rootMode: 'upward-optional',
ignore: [ignoreNonBabelAndNodeModules],
});
},
},
{
module: 'babel-register',
register: function(hook) {
hook({ extensions: '.jsx' });
hook({
extensions: '.jsx',
ignore: ignoreNonBabelAndNodeModules,
});
},
},
{
module: 'babel-core/register',
register: function(hook) {
hook({ extensions: '.jsx' });
hook({
extensions: '.jsx',
ignore: ignoreNonBabelAndNodeModules,
});
},
},
{
module: 'babel/register',
register: function(hook) {
hook({ extensions: '.jsx' });
hook({
extensions: '.jsx',
ignore: ignoreNonBabelAndNodeModules,
});
},
},
{
Expand Down Expand Up @@ -108,7 +145,11 @@ var extensions = {
{
module: '@babel/register',
register: function(hook) {
hook({ extensions: '.ts' });
hook({
extensions: '.ts',
rootMode: 'upward-optional',
ignore: [ignoreNonBabelAndNodeModules],
});
},
},
],
Expand All @@ -118,7 +159,11 @@ var extensions = {
{
module: '@babel/register',
register: function(hook) {
hook({ extensions: '.tsx' });
hook({
extensions: '.tsx',
rootMode: 'upward-optional',
ignore: [ignoreNonBabelAndNodeModules],
});
},
},
],
Expand Down
2 changes: 1 addition & 1 deletion test/index.js
Expand Up @@ -60,7 +60,7 @@ var minVersions = {
'require-xml': { major: 6, minor: 0 },
};

describe('interpret.extenstions', function() {
describe('interpret.extensions', function() {

beforeEach(cleanup);

Expand Down

0 comments on commit 7e2683b

Please sign in to comment.