@quasar/app-vite
Version:
Quasar Framework App CLI with Vite
85 lines (69 loc) • 1.98 kB
JavaScript
import { getPackage } from '../utils/get-package.js'
import { fatal } from '../utils/logger.js'
const bundlerMap = {
packager: {
pkg: '@electron/packager',
version: '19.0.0'
},
builder: {
pkg: 'electron-builder',
version: '26.0.12'
}
}
function isValidName(bundlerName) {
return ['packager', 'builder'].includes(bundlerName)
}
function installBundler(bundlerName, nodePackager) {
const bundler = bundlerMap[bundlerName]
nodePackager.installPackage(`${bundler.pkg}@^${bundler.version}`, {
isDevDependency: true,
displayName: bundler.pkg
})
}
function hasPackage(pkgName, appPkg) {
return (
((appPkg.devDependencies && appPkg.devDependencies[pkgName]) ||
(appPkg.dependencies && appPkg.dependencies[pkgName])) !== void 0
)
}
export async function createInstance({
appPaths,
pkg: { appPkg },
cacheProxy
}) {
const nodePackager = await cacheProxy.getModule('nodePackager')
function bundlerIsInstalled(bundlerName) {
const bundler = bundlerMap[bundlerName]
return hasPackage(bundler.pkg, appPkg)
}
function ensureInstall(bundlerName) {
if (!isValidName(bundlerName)) {
fatal(`Unknown bundler "${bundlerName}" for Electron`)
}
if (!bundlerIsInstalled(bundlerName)) {
installBundler(bundlerName, nodePackager)
}
}
function getDefaultName() {
if (bundlerIsInstalled('packager')) {
return 'packager'
}
if (bundlerIsInstalled('builder')) {
return 'builder'
}
return 'packager'
}
// Returns a Promise which resolves with the required bundler package.
// May return "{ packager }" (@electron/packager v19+) or
// "{ default }" (@electron/packager v18) or directly the package (electron-builder);
function getBundler(bundlerName) {
const bundler = bundlerMap[bundlerName]
return getPackage(bundler.pkg, appPaths.appDir)
}
return {
bundlerIsInstalled,
ensureInstall,
getDefaultName,
getBundler
}
}