Socket
Socket
Sign inDemoInstall

vite-plugin-resolve

Package Overview
Dependencies
Maintainers
1
Versions
43
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

vite-plugin-resolve - npm Package Compare versions

Comparing version 1.4.0 to 1.4.1

43

index.d.ts

@@ -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;
}
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",

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc