babel-plugin-transform-require-ignore
Advanced tools
Comparing version 0.0.2 to 0.1.0
'use strict'; | ||
var _chai = require('chai'); | ||
var _ava = require('ava'); | ||
var _babelEql = require('./helpers/babelEql'); | ||
var _babelCore = require('babel-core'); | ||
var _babelEql2 = _interopRequireDefault(_babelEql); | ||
var babel = _interopRequireWildcard(_babelCore); | ||
@@ -15,55 +15,61 @@ var _ = require('../.'); | ||
describe(__filename, function () { | ||
context('single use', function () { | ||
it('should remove require call expression by extensions', function () { | ||
(0, _babelEql2.default)('\n require(\'./index.less\');\n require(\'./index.sass\');\n require(\'babel\');\n ', { | ||
plugins: [[_2.default, { | ||
extensions: ['.less', 'sass'] | ||
}]] | ||
}).eql('\n require(\'babel\');\n '); | ||
}); | ||
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } | ||
it('should not process when remove require call expression in assignment expression', function () { | ||
(0, _chai.expect)(function () { | ||
var source = '\n var { a } = require(\'./index.less\');\n require(\'babel\');\n '; | ||
(0, _babelEql2.default)(source, { | ||
plugins: [[_2.default, { | ||
extensions: ['.less'] | ||
}]] | ||
}); | ||
}).to.throw('./index.less should not be assign to variable.'); | ||
}); | ||
function trimLines(str) { | ||
return str.replace(/^\n+|\n+$/, '').replace(/\n+/g, '\n'); | ||
} | ||
it('should remove require call expression in other block', function () { | ||
(0, _babelEql2.default)('\n (function (){\n require(\'./index.sass\');\n require(\'./index.less\');\n require(\'babel\');\n })();\n ', { | ||
plugins: [[_2.default, { | ||
extensions: ['.less', '.sass'] | ||
}]] | ||
}).eql('\n (function (){\n require(\'babel\');\n })();\n '); | ||
}); | ||
}); | ||
var babelAssign = function babelAssign() { | ||
var babelOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; | ||
return function (t, expected, input) { | ||
var code = babel.transform(input, babelOptions).code; | ||
t.is(trimLines(code), trimLines(babel.transform(expected, babelOptions).code)); | ||
}; | ||
}; | ||
context('with babel-preset-es2015', function () { | ||
it('should remove require call expression', function () { | ||
(0, _babelEql2.default)('\n require(\'./index.sass\');\n require(\'babel\');\n ', { | ||
presets: ['es2015'], | ||
plugins: [[_2.default, { | ||
extensions: ['.less', '.sass'] | ||
}]] | ||
}).eql('\n require(\'babel\');\n ', { | ||
presets: ['es2015'] | ||
}); | ||
var babelThrow = function babelThrow() { | ||
var babelOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; | ||
return function (t, input, msg) { | ||
var error = t.throws(function () { | ||
babel.transform(input, babelOptions); | ||
}); | ||
t.true(error.toString().includes(msg)); | ||
}; | ||
}; | ||
it('should remove require call expression after import transformed', function () { | ||
(0, _babelEql2.default)('\n import \'./index.less\';\n import * as babel from \'babel\';\n ', { | ||
presets: ['es2015'], | ||
plugins: [[_2.default, { | ||
extensions: ['.less', '.sass'] | ||
}]] | ||
}).eql('\n import * as babel from \'babel\';\n ', { | ||
presets: ['es2015'] | ||
}); | ||
}); | ||
}); | ||
}); | ||
var simpleBabelAssign = babelAssign({ | ||
plugins: [[_2.default, { | ||
extensions: ['.less', 'sass'] | ||
}]] | ||
}); | ||
var withES2015BabelAssign = babelAssign({ | ||
presets: ['es2015'], | ||
plugins: [[_2.default, { | ||
extensions: ['.less', 'sass'] | ||
}]] | ||
}); | ||
var simpleBabelThrow = babelThrow({ | ||
plugins: [[_2.default, { | ||
extensions: ['.less', 'sass'] | ||
}]] | ||
}); | ||
(0, _ava.test)('should remove require call expression by extensions', simpleBabelAssign, '\nrequire(\'babel\');\n', '\nrequire(\'./index.less\');\nrequire(\'./index.sass\');\nrequire(\'babel\');\n'); | ||
(0, _ava.test)('should remove import call expression by extensions', simpleBabelAssign, '\nimport \'./index.less\';\nimport * as babel from \'babel\';', '\nimport * as babel from \'babel\';\n'); | ||
(0, _ava.test)('should not process when remove require call expression in assignment expression', simpleBabelThrow, '\nvar { a } = require(\'./index.less\');\nrequire(\'babel\');\n', './index.less should not be assign to variable.'); | ||
(0, _ava.test)('should not process when remove import expression in default imports', simpleBabelThrow, '\nimport myCss from \'./index.less\';\nimport * as babel from \'babel\';\n', './index.less should not be imported using default imports.'); | ||
(0, _ava.test)('should not process when remove import expression in named imports', simpleBabelThrow, '\nimport { myCss } from \'./index.less\';\nimport * as babel from \'babel\';\n', './index.less should not be imported using named imports.'); | ||
(0, _ava.test)('should not process when remove import expression in namespace imports', simpleBabelThrow, '\nimport * as myCss from \'./index.less\';\nimport * as babel from \'babel\';\n', './index.less should not be imported using namespace imports.'); | ||
(0, _ava.test)('should remove require call expression in other block', simpleBabelAssign, '\n(function (){\n require(\'./index.sass\');\n require(\'./index.less\');\n require(\'babel\');\n})();\n', '\n(function (){\n require(\'babel\');\n})();\n'); | ||
(0, _ava.test)('should remove require call expression', withES2015BabelAssign, '\n require(\'./index.sass\');\n require(\'babel\');\n', '\n require(\'babel\');\n'); | ||
(0, _ava.test)('should remove require call expression after import transformed', withES2015BabelAssign, '\n import \'./index.less\';\n import * as babel from \'babel\';\n', '\n import * as babel from \'babel\';\n'); |
@@ -36,2 +36,35 @@ 'use strict'; | ||
} | ||
}, | ||
ImportDeclaration: { | ||
enter: function enter(nodePath, _ref2) { | ||
var opts = _ref2.opts; | ||
var extensionsInput = [].concat(opts.extensions || []); | ||
if (extensionsInput.length === 0) { | ||
return; | ||
} | ||
var extensions = extensionsInput.map(extFix); | ||
if (extensions.indexOf(_path2.default.extname(nodePath.node.source.value)) > -1) { | ||
var specifiers = nodePath.get('specifiers'); | ||
if (specifiers.length) { | ||
var specifier = specifiers[specifiers.length - 1]; | ||
if (specifier.isImportDefaultSpecifier()) { | ||
throw new Error(nodePath.node.source.value + ' should not be imported using default imports.'); | ||
} | ||
if (specifier.isImportSpecifier()) { | ||
throw new Error(nodePath.node.source.value + ' should not be imported using named imports.'); | ||
} | ||
if (specifier.isImportNamespaceSpecifier()) { | ||
throw new Error(nodePath.node.source.value + ' should not be imported using namespace imports.'); | ||
} | ||
} | ||
nodePath.remove(); | ||
} | ||
} | ||
} | ||
@@ -38,0 +71,0 @@ } |
{ | ||
"name": "babel-plugin-transform-require-ignore", | ||
"version": "0.0.2", | ||
"version": "0.1.0", | ||
"description": "ignore the required file by extension type", | ||
"main": "lib/index.js", | ||
"config": { | ||
"MOCHA_OPTS": "-R dot --compilers js:babel-core/register src/__tests__/*.spec.js" | ||
"ava": { | ||
"files": [ | ||
"src/__tests__/*.spec.js" | ||
], | ||
"require": [ | ||
"babel-core/register" | ||
], | ||
"babelrc": "inherit" | ||
}, | ||
"scripts": { | ||
"coverage": "babel-node ./node_modules/.bin/istanbul cover _mocha -- $npm_package_config_MOCHA_OPTS", | ||
"ut": "mocha $npm_package_config_MOCHA_OPTS", | ||
"test": "npm run lint && npm run coverage", | ||
"test": "npm run lint && ava -v", | ||
"build": "babel src/ --out-dir lib/", | ||
@@ -22,13 +26,12 @@ "pre-publish": "babel src --out-dir lib", | ||
"devDependencies": { | ||
"babel-cli": "^6.3.17", | ||
"babel-core": "^6.3.17", | ||
"babel-eslint": "^5.0.0-beta6", | ||
"babel-plugin-transform-class-properties": "^6.3.13", | ||
"babel-plugin-transform-object-rest-spread": "^6.3.13", | ||
"babel-preset-es2015": "^6.3.13", | ||
"chai": "^3.4.1", | ||
"eslint": "^1.10.3", | ||
"eslint-config-airbnb": "^2.1.0", | ||
"istanbul": "^1.0.0-alpha.2", | ||
"mocha": "^2.3.4" | ||
"ava": "0.18.2", | ||
"babel-cli": "6.23.0", | ||
"babel-core": "6.23.1", | ||
"babel-eslint": "7.1.1", | ||
"babel-plugin-transform-class-properties": "6.23.0", | ||
"babel-plugin-transform-object-rest-spread": "6.23.0", | ||
"babel-preset-es2015": "6.22.0", | ||
"eslint": "3.17.1", | ||
"eslint-config-airbnb-base": "11.1.1", | ||
"eslint-plugin-import": "2.2.0" | ||
}, | ||
@@ -35,0 +38,0 @@ "dependencies": {}, |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
136940
10