Socket
Socket
Sign inDemoInstall

vite-plugin-fast-external

Package Overview
Dependencies
Maintainers
1
Versions
32
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

vite-plugin-fast-external - npm Package Compare versions

Comparing version 1.4.2 to 1.4.3

84

index.js

@@ -1,3 +0,3 @@

const fs = require('fs')
const path = require('path')
const fs = require('fs');
const path = require('path');

@@ -8,4 +8,4 @@ module.exports = function external(

) {
let root = process.cwd()
const viteExternalId = '.vite-plugin-fast-external'
let root = process.cwd();
let externalDir = '.vite-plugin-fast-external';

@@ -18,7 +18,18 @@ return {

// TODO: config.root is relative path
root = config.root
root = config.root;
}
rewriteAlias(root, config, externals, viteExternalId)
generateExternalFile(root, externals, viteExternalId, options?.format || 'esm')
// absolute path
externalDir = path.join(node_modules(root), externalDir);
rewriteAlias(
config,
externals,
externalDir,
);
generateExternalFile(
externals,
externalDir,
options?.format || 'esm',
);
}

@@ -30,5 +41,5 @@ }

if (!(fs.existsSync(dir) && fs.statSync(dir).isDirectory())) {
fs.mkdirSync(dir, { recursive: true })
fs.mkdirSync(dir, { recursive: true });
}
return dir
return dir;
}

@@ -38,40 +49,35 @@

if (node_modules.p) {
return node_modules.p
return node_modules.p;
}
const p = path.join(root, 'node_modules')
const p = path.join(root, 'node_modules');
if (fs.existsSync(p)) {
return node_modules.p = p
return node_modules.p = p;
}
if (count >= 19) {
throw new Error('Can not found node_modules directory.')
throw new Error('Can not found node_modules directory.');
}
return node_modules(path.join(root, '..'), count + 1)
return node_modules(path.join(root, '..'), count + 1);
}
function generateExternalFile(
root,
externals,
directory,
format
externalDir,
format,
) {
// ensure .vite-plugin-fast-external directory existed
const externalDir = path.join(node_modules(root), directory)
fs.existsSync(externalDir) || fs.mkdirSync(externalDir)
// generate external module file.
// generate external module file
for (const [module, strOrFn] of Object.entries(externals)) {
const moduleId = path.join(node_modules(root), directory, `${module}.js`)
let moduleContent
const moduleId = path.join(externalDir, `${module}.js`);
let moduleContent;
if (typeof strOrFn === 'string') {
const iifeName = strOrFn
const iifeName = strOrFn;
moduleContent = format === 'cjs'
? `const ${iifeName} = window['${iifeName}']; module.exports = ${iifeName};`
: `const ${iifeName} = window['${iifeName}']; export { ${iifeName} as default }`
: `const ${iifeName} = window['${iifeName}']; export { ${iifeName} as default }`;
} else {
moduleContent = strOrFn()
moduleContent = strOrFn();
}
// for '@scope/name' package
ensureDir(path.parse(moduleId).dir)
fs.writeFileSync(moduleId, moduleContent)
ensureDir(path.parse(moduleId).dir);
fs.writeFileSync(moduleId, moduleContent);
}

@@ -81,22 +87,22 @@ }

function rewriteAlias(
root,
config,
external,
directory
externals,
externalDir,
) {
if (!config.resolve) {
config.resolve = {}
config.resolve = {};
}
let alias = config.resolve.alias || {}
let alias = config.resolve.alias || {};
if (!Array.isArray(alias)) {
alias = Object.entries(alias).map(([k, v]) => ({ find: k, replacement: v }))
// keep the the original alias
alias = Object.entries(alias).map(([k, v]) => ({ find: k, replacement: v }));
}
Object.keys(external).forEach(k => {
// redirect external module to `node_modules/.vite-plugin-fast-external` directory
alias.push({ find: k, replacement: path.join(node_modules(root), directory, k) })
Object.keys(externals).forEach(k => {
// redirect external-module to `node_modules/.vite-plugin-fast-external`
alias.push({ find: k, replacement: path.join(externalDir, k) });
})
config.resolve.alias = alias
config.resolve.alias = alias;
}
{
"name": "vite-plugin-fast-external",
"version": "1.4.2",
"version": "1.4.3",
"description": "An tiny and fast external plugin for vite.",

@@ -5,0 +5,0 @@ "main": "index.js",

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