vite-plugin-resolve
Advanced tools
Comparing version 1.4.0 to 1.4.1
@@ -0,23 +1,46 @@ | ||
import { Plugin, UserConfig } from 'vite'; | ||
export interface Resolves { | ||
[moduleId: string]: string | (() => string | Promise<string>); | ||
} | ||
export interface VitePluginResolve { | ||
(resolves: Resolves): Plugin; | ||
} | ||
/** | ||
* Custom resolve code for vite | ||
* | ||
* | ||
* @example | ||
* ```js | ||
* export default defineConfig({ | ||
* plugins: [ | ||
* viteResolve({ | ||
* // use code string | ||
* // resolve external module | ||
* vue: `const vue = window.Vue; export default vue;`, | ||
* // use nested module name, return code string through function | ||
* '@scope/name': () => `const Lib = window.LibraryName; export default Lib;`, | ||
* // use in electron | ||
* 'electron': `const Electron = require('electron'); export default Electron;`, | ||
* | ||
* // nested moduleId and return Promis<string> | ||
* '@scope/name': async () => await require('fs').promises.readFile('path', 'utf-8'), | ||
* | ||
* // electron | ||
* electron: `const { ipcRenderer } = require('electron'); export { ipcRenderer };`, | ||
* }) | ||
* ] | ||
* }) | ||
* ``` | ||
*/ | ||
declare function resolve( | ||
resolves: Record<string, string | (() => string)> | ||
): import('vite').Plugin | ||
declare const resolve: VitePluginResolve; | ||
export default resolve | ||
export default resolve; | ||
// --------- utils --------- | ||
export interface GenerateESModule { | ||
(cacheDir: string, resolves: Resolves): Promise<void>; | ||
} | ||
export interface ModifyAlias { | ||
( | ||
config: UserConfig, | ||
aliaList: { [moduleId: string]: string; }[], | ||
): void; | ||
} |
72
index.js
const fs = require('fs'); | ||
const path = require('path'); | ||
/** | ||
* @type {import('.').VitePluginResolve} | ||
*/ | ||
module.exports = function resolve(resolves = {}) { | ||
@@ -10,3 +13,3 @@ let root = process.cwd(); | ||
name: 'vite-plugin-resolve', | ||
config(config) { | ||
async config(config) { | ||
// init root path | ||
@@ -21,11 +24,8 @@ if (config.root && path.isAbsolute(config.root)) { | ||
generateResolveFile( | ||
resolves, | ||
cacheDir, | ||
); | ||
rewriteAlias( | ||
modifyAlias( | ||
config, | ||
resolves, | ||
cacheDir, | ||
Object.keys(resolves).map(moduleId => ({ [moduleId]: path.join(cacheDir, moduleId) })), | ||
); | ||
await generateESModule(cacheDir, resolves); | ||
}, | ||
@@ -35,6 +35,6 @@ } | ||
function generateResolveFile( | ||
resolves, | ||
cacheDir, | ||
) { | ||
/** | ||
* @type {import('.').GenerateESModule} | ||
*/ | ||
async function generateESModule(cacheDir, resolves) { | ||
// generate custom-resolve module file | ||
@@ -45,19 +45,19 @@ for (const [module, strOrFn] of Object.entries(resolves)) { | ||
// for '@scope/name' module | ||
// supported nest moduleId ('@scope/name') | ||
ensureDir(path.parse(moduleId).dir); | ||
// write custom-resolve | ||
fs.writeFileSync(moduleId, moduleContent); | ||
fs.writeFileSync( | ||
moduleId, | ||
moduleContent instanceof Promise ? await moduleContent : moduleContent, | ||
); | ||
} | ||
} | ||
function rewriteAlias( | ||
config, | ||
resolves, | ||
cacheDir, | ||
) { | ||
if (!config.resolve) { | ||
config.resolve = {}; | ||
} | ||
/** | ||
* @type {import('.').ModifyAlias} | ||
*/ | ||
function modifyAlias(config, aliaList) { | ||
if (!config.resolve) config.resolve = {}; | ||
let alias = config.resolve.alias || {}; | ||
let alias = config.resolve.alias || []; | ||
if (!Array.isArray(alias)) { | ||
@@ -67,11 +67,20 @@ // keep the the original alias | ||
} | ||
// redirect resolve-module to `node_modules/.vite-plugin-resolve` | ||
alias.push(...aliaList.map(item => { | ||
const [find, replacement] = Object.entries(item)[0]; | ||
return { find, replacement }; | ||
})); | ||
Object.keys(resolves).forEach(k => { | ||
// redirect resolve-module to `node_modules/.vite-plugin-resolve` | ||
alias.push({ find: k, replacement: path.join(cacheDir, k) }); | ||
}); | ||
config.resolve.alias = alias; | ||
} | ||
// --------- utils --------- | ||
function ensureDir(dir) { | ||
if (!(fs.existsSync(dir) && fs.statSync(dir).isDirectory())) { | ||
fs.mkdirSync(dir, { recursive: true }); | ||
} | ||
return dir; | ||
} | ||
function node_modules(root, count = 0) { | ||
@@ -90,8 +99,1 @@ if (node_modules.p) { | ||
} | ||
function ensureDir(dir) { | ||
if (!(fs.existsSync(dir) && fs.statSync(dir).isDirectory())) { | ||
fs.mkdirSync(dir, { recursive: true }); | ||
} | ||
return dir; | ||
} |
{ | ||
"name": "vite-plugin-resolve", | ||
"version": "1.4.0", | ||
"description": "Custom resolve code for vite", | ||
"version": "1.4.1", | ||
"description": "Custom resolve module content.", | ||
"main": "index.js", | ||
@@ -6,0 +6,0 @@ "repository": "https://github.com/caoxiemeihao/vite-plugins/tree/main/packages/resolve", |
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
5386
120