vite-tsconfig-paths
Advanced tools
Comparing version 2.0.0-alpha.1 to 2.0.0-alpha.2
@@ -1,3 +0,17 @@ | ||
import { Resolver } from 'vite/dist/node/resolver'; | ||
declare let resolver: Resolver; | ||
export default resolver; | ||
import type { Plugin } from 'vite'; | ||
declare type PluginOptions = { | ||
/** | ||
* The root directory to load `tsconfig.json` from. | ||
* | ||
* @default viteConfig.root | ||
*/ | ||
root?: string; | ||
/** | ||
* File extensions to search for. | ||
* | ||
* @default .ts | .tsx | .js | .jsx | .json | ||
*/ | ||
extensions?: string[]; | ||
}; | ||
declare const _default: (opts?: PluginOptions) => Plugin; | ||
export default _default; |
"use strict"; | ||
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { | ||
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } | ||
return new (P || (P = Promise))(function (resolve, reject) { | ||
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } | ||
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } | ||
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } | ||
step((generator = generator.apply(thisArg, _arguments || [])).next()); | ||
}); | ||
}; | ||
var __generator = (this && this.__generator) || function (thisArg, body) { | ||
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; | ||
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; | ||
function verb(n) { return function (v) { return step([n, v]); }; } | ||
function step(op) { | ||
if (f) throw new TypeError("Generator is already executing."); | ||
while (_) try { | ||
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; | ||
if (y = 0, t) op = [op[0] & 2, t.value]; | ||
switch (op[0]) { | ||
case 0: case 1: t = op; break; | ||
case 4: _.label++; return { value: op[1], done: false }; | ||
case 5: _.label++; y = op[1]; op = [0]; continue; | ||
case 7: op = _.ops.pop(); _.trys.pop(); continue; | ||
default: | ||
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } | ||
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } | ||
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } | ||
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } | ||
if (t[2]) _.ops.pop(); | ||
_.trys.pop(); continue; | ||
} | ||
op = body.call(thisArg, _); | ||
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } | ||
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; | ||
} | ||
}; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
var path_1 = require("path"); | ||
var tsconfig_paths_1 = require("tsconfig-paths"); | ||
var resolver_1 = require("vite/dist/node/resolver"); | ||
var debug = require('debug')('vite-tsconfig-paths'); | ||
var resolver = {}; | ||
var config = tsconfig_paths_1.loadConfig(); | ||
if (config.resultType == 'failed') { | ||
console.warn('[vite-tsconfig-paths]', config.message); | ||
} | ||
else if (config.paths) { | ||
var matchPath_1 = tsconfig_paths_1.createMatchPath(config.absoluteBaseUrl, config.paths, config.mainFields || resolver_1.mainFields, config.addMatchAll); | ||
var resolved_1 = new Map(); | ||
resolver = { | ||
alias: function (id) { | ||
var path = resolved_1.get(id); | ||
if (!path) { | ||
path = matchPath_1(id, undefined, undefined, resolver_1.supportedExts); | ||
if (path) { | ||
resolved_1.set(id, (path = '/' + path_1.relative(process.cwd(), path))); | ||
debug("resolved \"" + id + "\" to \"" + path + "\""); | ||
} | ||
exports.default = (function (opts) { | ||
if (opts === void 0) { opts = {}; } | ||
return ({ | ||
name: 'vite:tsconfig-paths', | ||
enforce: 'pre', | ||
configResolved: function (_a) { | ||
var root = _a.root, logger = _a.logger; | ||
root = path_1.resolve(opts.root || root) + path_1.sep; | ||
var config = tsconfig_paths_1.loadConfig(root); | ||
if (config.resultType == 'failed') { | ||
logger.warn("[vite-tsconfig-paths] " + config.message); | ||
} | ||
return path; | ||
else if (config.paths) { | ||
var matchPath_1 = tsconfig_paths_1.createMatchPath(config.absoluteBaseUrl, config.paths, config.mainFields || [ | ||
'module', | ||
'jsnext', | ||
'jsnext:main', | ||
'browser', | ||
'main', | ||
], config.addMatchAll); | ||
var resolved_1 = new Map(); | ||
this.resolveId = function (id, importer) { | ||
return __awaiter(this, void 0, void 0, function () { | ||
var path, resolution; | ||
return __generator(this, function (_a) { | ||
switch (_a.label) { | ||
case 0: | ||
if (!importer || !/\.tsx?$/.test(importer)) { | ||
return [2 /*return*/, null]; | ||
} | ||
path = resolved_1.get(id); | ||
if (!(!path && isLocalDescendant(importer, root))) return [3 /*break*/, 2]; | ||
path = matchPath_1(id, undefined, undefined, opts.extensions || defaultExtensions); | ||
if (!path) return [3 /*break*/, 2]; | ||
path = '/' + path_1.relative(process.cwd(), path); | ||
return [4 /*yield*/, this.resolve(path, importer, { | ||
skipSelf: true, | ||
})]; | ||
case 1: | ||
resolution = _a.sent(); | ||
if (resolution) { | ||
resolved_1.set(id, (path = resolution.id)); | ||
debug("resolved \"" + id + "\" to \"" + path + "\""); | ||
} | ||
_a.label = 2; | ||
case 2: return [2 /*return*/, path]; | ||
} | ||
}); | ||
}); | ||
}; | ||
} | ||
}, | ||
}; | ||
}); | ||
}); | ||
var nodeModulesRE = /\bnode_modules\b/; | ||
/** Returns true when `path` is within `root` and not an installed dependency. */ | ||
function isLocalDescendant(path, root) { | ||
return path.startsWith(root) && !nodeModulesRE.test(path.slice(root.length)); | ||
} | ||
exports.default = resolver; | ||
var defaultExtensions = ['.ts', '.tsx', '.js', '.jsx', '.json']; | ||
//# sourceMappingURL=index.js.map |
{ | ||
"name": "vite-tsconfig-paths", | ||
"version": "2.0.0-alpha.1", | ||
"version": "2.0.0-alpha.2", | ||
"description": "Vite resolver for TypeScript compilerOptions.paths", | ||
@@ -5,0 +5,0 @@ "main": "dist/index.js", |
import type { Plugin } from 'vite' | ||
import { relative } from 'path' | ||
import { relative, resolve, sep } from 'path' | ||
import { createMatchPath, loadConfig } from 'tsconfig-paths' | ||
@@ -17,3 +17,3 @@ | ||
* | ||
* @default Object.keys(require.extensions) | ||
* @default .ts | .tsx | .js | .jsx | .json | ||
*/ | ||
@@ -23,6 +23,9 @@ extensions?: string[] | ||
export default (opts: PluginOptions): Plugin => ({ | ||
export default (opts: PluginOptions = {}): Plugin => ({ | ||
name: 'vite:tsconfig-paths', | ||
enforce: 'pre', | ||
configResolved({ root, logger }) { | ||
const config = loadConfig(opts.root || root) | ||
root = resolve(opts.root || root) + sep | ||
const config = loadConfig(root) | ||
if (config.resultType == 'failed') { | ||
@@ -44,9 +47,25 @@ logger.warn(`[vite-tsconfig-paths] ${config.message}`) | ||
const resolved = new Map<string, string>() | ||
this.resolveId = (id) => { | ||
this.resolveId = async function (id, importer) { | ||
if (!importer || !/\.tsx?$/.test(importer)) { | ||
return null | ||
} | ||
let path = resolved.get(id) | ||
if (!path) { | ||
path = matchPath(id, undefined, undefined, opts.extensions) | ||
if (!path && isLocalDescendant(importer, root)) { | ||
path = matchPath( | ||
id, | ||
undefined, | ||
undefined, | ||
opts.extensions || defaultExtensions | ||
) | ||
if (path) { | ||
resolved.set(id, (path = '/' + relative(process.cwd(), path))) | ||
debug(`resolved "${id}" to "${path}"`) | ||
path = '/' + relative(process.cwd(), path) | ||
const resolution = await this.resolve(path, importer, { | ||
skipSelf: true, | ||
}) | ||
if (resolution) { | ||
resolved.set(id, (path = resolution.id)) | ||
debug(`resolved "${id}" to "${path}"`) | ||
} | ||
} | ||
@@ -59,1 +78,10 @@ } | ||
}) | ||
const nodeModulesRE = /\bnode_modules\b/ | ||
/** Returns true when `path` is within `root` and not an installed dependency. */ | ||
function isLocalDescendant(path: string, root: string) { | ||
return path.startsWith(root) && !nodeModulesRE.test(path.slice(root.length)) | ||
} | ||
const defaultExtensions = ['.ts', '.tsx', '.js', '.jsx', '.json'] |
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
13303
192