@quasar/app-webpack
Version:
Quasar Framework App CLI with Webpack
84 lines (67 loc) • 1.83 kB
JavaScript
const { getPackage } = require('../utils/get-package.js')
const { fatal } = require('../utils/logger.js')
const bundlerMap = {
packager: {
pkg: '@electron/packager',
version: '18.3.2'
},
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 ]
return getPackage(bundler.pkg, appDir)
}
return {
bundlerIsInstalled,
ensureInstall,
getDefaultName,
getBundler
}
}