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.0.2 to 1.2.0

54

dist/index.js

@@ -13,44 +13,28 @@ "use strict";

const node_modules = path_1.default.join(root, 'node_modules');
const viteExternal = '.vite-plugin-fast-external';
const viteExternalId = '.vite-plugin-fast-external';
return {
name: 'vite-plugin-fast-external',
config(config) {
var _a, _b, _c;
// ensure viteExternal exist
const externalDir = path_1.default.join(node_modules, viteExternal);
const externalDir = path_1.default.join(node_modules, viteExternalId);
fs_1.default.existsSync(externalDir) || fs_1.default.mkdirSync(externalDir);
// generate external module file.
for (const [mod, iifeName] of Object.entries(externals)) {
const modFilename = path_1.default.join(node_modules, viteExternal, `${mod}.js`);
const modFilename = path_1.default.join(node_modules, viteExternalId, `${mod}.js`);
if (!fs_1.default.existsSync(modFilename)) {
// for '@scope/name' package
ensureDir(path_1.default.parse(modFilename).dir);
const modContent = (options === null || options === void 0 ? void 0 : options.format) === 'cjs'
? `const ${mod} = window['${iifeName}']; module.exports = ${mod};`
: `const ${mod} = window['${iifeName}']; export { ${mod} as default }`;
? `const ${iifeName} = window['${iifeName}']; module.exports = ${iifeName};`
: `const ${iifeName} = window['${iifeName}']; export { ${iifeName} as default }`;
fs_1.default.writeFileSync(modFilename, modContent);
}
}
// merge external module to alias
const withExternalsAlias = Object.keys(externals).map(key => ({
find: key,
// splice node_modules prefix for third party package.jon correct resolved
// eg: element-ui
replacement: `node_modules/${viteExternal}/${key}.js`,
}));
const alias = (_b = (_a = config.resolve) === null || _a === void 0 ? void 0 : _a.alias) !== null && _b !== void 0 ? _b : {};
if (Object.prototype.toString.call(alias) === '[object Object]') {
for (const [find, replacement] of Object.entries(alias)) {
withExternalsAlias.push({ find, replacement });
}
}
else if (Array.isArray(alias)) {
withExternalsAlias.push(...alias);
}
config.resolve = {
...((_c = config.resolve) !== null && _c !== void 0 ? _c : {}),
alias: withExternalsAlias,
};
},
load(id) {
if (id.includes(viteExternal)) {
const modFilename = path_1.default.join(root, id);
const url = cleanUrl(id);
const parsed = path_1.default.parse(url);
const external = Object.entries(externals).find(([name]) => url.includes('node_modules') && parsed.name === name);
if (external) {
const modFilename = path_1.default.join(node_modules, viteExternalId, parsed.base);
return modCache[modFilename] || (modCache[modFilename] = fs_1.default.readFileSync(modFilename, 'utf8'));

@@ -62,2 +46,16 @@ }

exports.external = external;
function ensureDir(dir) {
try {
fs_1.default.statSync(dir).isDirectory();
}
catch (error) {
fs_1.default.mkdirSync(dir, { recursive: true });
}
return dir;
}
function cleanUrl(url) {
const queryRE = /\?.*$/s;
const hashRE = /#.*$/s;
return url.replace(hashRE, '').replace(queryRE, '');
}
exports.default = external;
{
"name": "vite-plugin-fast-external",
"version": "1.0.2",
"description": "An tiny and fast external for vite plugin.",
"version": "1.2.0",
"description": "An tiny and fast external plugin for vite.",
"main": "dist/index.js",

@@ -24,3 +24,8 @@ "repository": "https://github.com/caoxiemeihao/vite-plugins/tree/main/packages/fast-external",

"README.md"
],
"keywords": [
"vite",
"external",
"vite-plugin-external"
]
}
import fs from 'fs'
import path from 'path'
import { Alias, Plugin as VitePlugin } from 'vite'
import { Plugin as VitePlugin } from 'vite'

@@ -19,3 +19,3 @@ export function external(

const node_modules = path.join(root, 'node_modules')
const viteExternal = '.vite-plugin-fast-external'
const viteExternalId = '.vite-plugin-fast-external'

@@ -26,3 +26,3 @@ return {

// ensure viteExternal exist
const externalDir = path.join(node_modules, viteExternal)
const externalDir = path.join(node_modules, viteExternalId)
fs.existsSync(externalDir) || fs.mkdirSync(externalDir)

@@ -32,35 +32,21 @@

for (const [mod, iifeName] of Object.entries(externals)) {
const modFilename = path.join(node_modules, viteExternal, `${mod}.js`)
const modFilename = path.join(node_modules, viteExternalId, `${mod}.js`)
if (!fs.existsSync(modFilename)) {
// for '@scope/name' package
ensureDir(path.parse(modFilename).dir)
const modContent = options?.format === 'cjs'
? `const ${mod} = window['${iifeName}']; module.exports = ${mod};`
: `const ${mod} = window['${iifeName}']; export { ${mod} as default }`
? `const ${iifeName} = window['${iifeName}']; module.exports = ${iifeName};`
: `const ${iifeName} = window['${iifeName}']; export { ${iifeName} as default }`
fs.writeFileSync(modFilename, modContent)
}
}
// merge external module to alias
const withExternalsAlias: Alias[] = Object.keys(externals).map(key => ({
find: key,
// splice node_modules prefix for third party package.jon correct resolved
// eg: element-ui
replacement: `node_modules/${viteExternal}/${key}.js`,
}))
const alias = config.resolve?.alias ?? {}
if (Object.prototype.toString.call(alias) === '[object Object]') {
for (const [find, replacement] of Object.entries(alias)) {
withExternalsAlias.push({ find, replacement })
}
} else if (Array.isArray(alias)) {
withExternalsAlias.push(...alias)
}
config.resolve = {
...(config.resolve ?? {}),
alias: withExternalsAlias,
}
},
load(id) {
if (id.includes(viteExternal)) {
const modFilename = path.join(root, id)
const url = cleanUrl(id)
const parsed = path.parse(url)
const external = Object.entries(externals).find(([name]) => url.includes('node_modules') && parsed.name === name)
if (external) {
const modFilename = path.join(node_modules, viteExternalId, parsed.base)

@@ -73,2 +59,17 @@ return modCache[modFilename] || (modCache[modFilename] = fs.readFileSync(modFilename, 'utf8'))

function ensureDir(dir: string) {
try {
fs.statSync(dir).isDirectory()
} catch (error) {
fs.mkdirSync(dir, { recursive: true })
}
return dir
}
function cleanUrl(url: string) {
const queryRE = /\?.*$/s
const hashRE = /#.*$/s
return url.replace(hashRE, '').replace(queryRE, '')
}
export default external
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