@quasar/app-webpack
Version:
Quasar Framework App CLI with Webpack
88 lines (71 loc) • 1.95 kB
JavaScript
const { getPackage } = require('../utils/get-package.js')
const { fatal } = require('../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
)
}
module.exports.createInstance = function createInstance({
appPaths,
pkg: { appPkg },
cacheProxy
}) {
const nodePackager = 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'
}
function getBundler(bundlerName) {
const { appDir } = appPaths
const bundler = bundlerMap[bundlerName]
const fn = getPackage(bundler.pkg, appDir)
return bundlerName === 'packager'
? /* @electron/packager v19+ */ fn.packager ||
/* @electron/packager v18 */ fn
: fn
}
return {
bundlerIsInstalled,
ensureInstall,
getDefaultName,
getBundler
}
}