rollup-plugin-extensions
Advanced tools
Comparing version 0.0.2 to 0.1.0
/** | ||
* rollup-plugin-extensions v0.0.2 | ||
* rollup-plugin-extensions v0.1.0 | ||
* Author: Gabe Meola <gabe@zelzen.io> | ||
@@ -12,5 +12,5 @@ * | ||
var basename = posix.basename, dirname = posix.dirname, isAbsolute = posix.isAbsolute, resolve = posix.resolve; | ||
function exists(file) { | ||
function fileExists(filePath) { | ||
try { | ||
return fs.statSync(file).isFile(); | ||
return fs.statSync(filePath).isFile(); | ||
} | ||
@@ -21,4 +21,12 @@ catch (err) { | ||
} | ||
function isDirectory(filePath) { | ||
try { | ||
return fs.statSync(filePath).isDirectory(); | ||
} | ||
catch (err) { | ||
return false; | ||
} | ||
} | ||
var resolvedFilesCache = new Map(); | ||
function addExtensionIfNecessary(file, extensions) { | ||
function resolveFilePath(file, extensions, resolveIndex) { | ||
try { | ||
@@ -33,3 +41,3 @@ // Check if file is already resolved | ||
// We have an exact path. | ||
if (files.includes(name) && exists(file)) { | ||
if (files.includes(name) && fileExists(file)) { | ||
resolvedFilesCache.set(file, file); | ||
@@ -43,3 +51,3 @@ return file; | ||
// Return on first find | ||
if (files.includes(fileName) && exists(filePath)) { | ||
if (files.includes(fileName) && fileExists(filePath)) { | ||
resolvedFilesCache.set(file, filePath); | ||
@@ -49,2 +57,20 @@ return filePath; | ||
} | ||
// Resolve index file if path is a directory. | ||
// This should come *after* checking to see if we have any files that match, | ||
// in-case there is a dir and a file with the same name. | ||
if (resolveIndex === true && isDirectory(file)) { | ||
// Get all available files from dir | ||
var files_1 = fs.readdirSync(file); | ||
for (var _a = 0, extensions_2 = extensions; _a < extensions_2.length; _a++) { | ||
var ext = extensions_2[_a]; | ||
// Check for any index files matching extensions | ||
var fileName = "index" + ext; | ||
var filePath = resolve(file, fileName); | ||
// Return first index file found in dir | ||
if (files_1.includes(fileName) && fileExists(filePath)) { | ||
resolvedFilesCache.set(file, filePath); | ||
return filePath; | ||
} | ||
} | ||
} | ||
} | ||
@@ -58,3 +84,3 @@ catch (err) { | ||
function extensions(_a) { | ||
var _b = (_a === void 0 ? {} : _a).extensions, extensions = _b === void 0 ? DEFAULT_EXTENSIONS : _b; | ||
var _b = _a === void 0 ? {} : _a, _c = _b.extensions, extensions = _c === void 0 ? DEFAULT_EXTENSIONS : _c, _d = _b.resolveIndex, resolveIndex = _d === void 0 ? true : _d; | ||
if (extensions == null || extensions.length <= 0) { | ||
@@ -68,7 +94,7 @@ throw new Error("[rollup-plugin-extensions] Extensions must be a non-empty array of strings.\n e.g \"{ extensions: ['.ts, '.jsx', '.jsx'] }\"\n "); | ||
if (isAbsolute(id)) | ||
return addExtensionIfNecessary(resolve(id), extensions); | ||
return resolveFilePath(resolve(id), extensions, resolveIndex); | ||
// Parent will be undefined if this is an entry point. | ||
// Resolve against current working directory. | ||
if (parent === undefined) | ||
return addExtensionIfNecessary(resolve(process.cwd(), id), extensions); | ||
return resolveFilePath(resolve(process.cwd(), id), extensions, resolveIndex); | ||
// Skip external modules at this stage | ||
@@ -78,5 +104,5 @@ if (id[0] !== '.') | ||
// Resolve all local imports | ||
return addExtensionIfNecessary( | ||
return resolveFilePath( | ||
// local file path | ||
resolve(dirname(parent), id), extensions); | ||
resolve(dirname(parent), id), extensions, resolveIndex); | ||
} | ||
@@ -83,0 +109,0 @@ }; |
/** | ||
* rollup-plugin-extensions v0.0.2 | ||
* rollup-plugin-extensions v0.1.0 | ||
* Author: Gabe Meola <gabe@zelzen.io> | ||
@@ -16,5 +16,5 @@ * | ||
var basename = path.posix.basename, dirname = path.posix.dirname, isAbsolute = path.posix.isAbsolute, resolve = path.posix.resolve; | ||
function exists(file) { | ||
function fileExists(filePath) { | ||
try { | ||
return fs.statSync(file).isFile(); | ||
return fs.statSync(filePath).isFile(); | ||
} | ||
@@ -25,4 +25,12 @@ catch (err) { | ||
} | ||
function isDirectory(filePath) { | ||
try { | ||
return fs.statSync(filePath).isDirectory(); | ||
} | ||
catch (err) { | ||
return false; | ||
} | ||
} | ||
var resolvedFilesCache = new Map(); | ||
function addExtensionIfNecessary(file, extensions) { | ||
function resolveFilePath(file, extensions, resolveIndex) { | ||
try { | ||
@@ -37,3 +45,3 @@ // Check if file is already resolved | ||
// We have an exact path. | ||
if (files.includes(name) && exists(file)) { | ||
if (files.includes(name) && fileExists(file)) { | ||
resolvedFilesCache.set(file, file); | ||
@@ -47,3 +55,3 @@ return file; | ||
// Return on first find | ||
if (files.includes(fileName) && exists(filePath)) { | ||
if (files.includes(fileName) && fileExists(filePath)) { | ||
resolvedFilesCache.set(file, filePath); | ||
@@ -53,2 +61,20 @@ return filePath; | ||
} | ||
// Resolve index file if path is a directory. | ||
// This should come *after* checking to see if we have any files that match, | ||
// in-case there is a dir and a file with the same name. | ||
if (resolveIndex === true && isDirectory(file)) { | ||
// Get all available files from dir | ||
var files_1 = fs.readdirSync(file); | ||
for (var _a = 0, extensions_2 = extensions; _a < extensions_2.length; _a++) { | ||
var ext = extensions_2[_a]; | ||
// Check for any index files matching extensions | ||
var fileName = "index" + ext; | ||
var filePath = resolve(file, fileName); | ||
// Return first index file found in dir | ||
if (files_1.includes(fileName) && fileExists(filePath)) { | ||
resolvedFilesCache.set(file, filePath); | ||
return filePath; | ||
} | ||
} | ||
} | ||
} | ||
@@ -62,3 +88,3 @@ catch (err) { | ||
function extensions(_a) { | ||
var _b = (_a === void 0 ? {} : _a).extensions, extensions = _b === void 0 ? DEFAULT_EXTENSIONS : _b; | ||
var _b = _a === void 0 ? {} : _a, _c = _b.extensions, extensions = _c === void 0 ? DEFAULT_EXTENSIONS : _c, _d = _b.resolveIndex, resolveIndex = _d === void 0 ? true : _d; | ||
if (extensions == null || extensions.length <= 0) { | ||
@@ -72,7 +98,7 @@ throw new Error("[rollup-plugin-extensions] Extensions must be a non-empty array of strings.\n e.g \"{ extensions: ['.ts, '.jsx', '.jsx'] }\"\n "); | ||
if (isAbsolute(id)) | ||
return addExtensionIfNecessary(resolve(id), extensions); | ||
return resolveFilePath(resolve(id), extensions, resolveIndex); | ||
// Parent will be undefined if this is an entry point. | ||
// Resolve against current working directory. | ||
if (parent === undefined) | ||
return addExtensionIfNecessary(resolve(process.cwd(), id), extensions); | ||
return resolveFilePath(resolve(process.cwd(), id), extensions, resolveIndex); | ||
// Skip external modules at this stage | ||
@@ -82,5 +108,5 @@ if (id[0] !== '.') | ||
// Resolve all local imports | ||
return addExtensionIfNecessary( | ||
return resolveFilePath( | ||
// local file path | ||
resolve(dirname(parent), id), extensions); | ||
resolve(dirname(parent), id), extensions, resolveIndex); | ||
} | ||
@@ -87,0 +113,0 @@ }; |
import { Plugin } from 'rollup'; | ||
declare type Extensions = Array<string>; | ||
declare type ExtensionsArgs = { | ||
/** Which extensions to look for */ | ||
extensions?: Extensions; | ||
/** If folder "index" files should be resolved. Will use extensions. */ | ||
resolveIndex?: boolean; | ||
}; | ||
export default function extensions({ extensions }?: ExtensionsArgs): Plugin; | ||
export default function extensions({ extensions, resolveIndex, }?: ExtensionsArgs): Plugin; | ||
export {}; |
{ | ||
"name": "rollup-plugin-extensions", | ||
"version": "0.0.2", | ||
"version": "0.1.0", | ||
"description": "Allow rollup to resolve local files with any extension", | ||
@@ -5,0 +5,0 @@ "main": "lib/index.js", |
@@ -27,3 +27,6 @@ # rollup-plugin-extensions | ||
// Uses ".mjs, .js" by default | ||
extensions: ['.tsx', '.ts', '.jsx', '.js'] | ||
extensions: ['.tsx', '.ts', '.jsx', '.js'], | ||
// Resolves index dir files based on supplied extensions | ||
// This is enable by default | ||
resolveIndex: true, | ||
}) | ||
@@ -47,5 +50,5 @@ ] | ||
- [ ] - Add support for index file resolution | ||
- [ ] - Testing Suite | ||
["Inspired" by Oskar](https://github.com/rollup/rollup/issues/1052#issuecomment-260068521) |
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
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
11667
214
53
0