此页面指的是 src/uninstall.js
文件,该文件在卸载应用扩展时执行。并非所有应用扩展都需要卸载 - 这是一个可选步骤。
文件基本结构示例
// can be async
export default function (api) {
// props and methods for "api" Object
// are described below
}
内容粘贴
api.engine
包含正在使用的 Quasar CLI 引擎(作为字符串)。例如:@quasar/app-vite
或 @quasar/app-webpack
。
api.hasVite
布尔值 - 是否在 @quasar/app-vite
上运行。
api.hasWebpack
布尔值 - 是否在 @quasar/app-webpack
上运行。
api.extId
包含此应用扩展的 ext-id
(字符串)。
api.prompts
是一个对象,包含此应用扩展安装时提示的答案。有关提示的更多信息,请查看 提示 API。
api.resolve
解析此应用扩展正在运行的应用程序中的路径。无需导入 path
并自行解析路径。
// resolves to root of app
api.resolve.app('src/my-file.js')
// resolves to root/src of app
api.resolve.src('my-file.js')
// resolves to root/public of app
// (@quasar/app-webpack v3.4+ or @quasar/app-vite v1+)
api.resolve.public('my-image.png')
// resolves to root/src-pwa of app
api.resolve.pwa('some-file.js')
// resolves to root/src-ssr of app
api.resolve.ssr('some-file.js')
// resolves to root/src-cordova of app
api.resolve.cordova('config.xml')
// resolves to root/src-electron of app
api.resolve.electron('some-file.js')
// resolves to root/src-bex of app
api.resolve.bex('some-file.js')
内容粘贴
api.appDir
包含此应用扩展正在运行的应用程序根目录的完整路径(字符串)。
api.hasTypescript@quasar/app-vite 1.6+ @quasar/app-webpack 3.11+
/**
* @return {Promise<boolean>} host project has Typescript active or not
*/
await api.hasTypescript()
内容粘贴
api.hasLint@quasar/app-vite 1.6+ @quasar/app-webpack 3.11+
/**
* @return {Promise<boolean>} host project has ESLint or not
*/
await api.hasLint()
内容粘贴
api.getStorePackageName@quasar/app-vite 1.6+ @quasar/app-webpack 3.11+
/**
* @return {Promise<string|undefined>} 'pinia' | 'vuex' | undefined
*/
await api.getStorePackageName()
内容粘贴
api.getNodePackagerName@quasar/app-vite 1.6+ @quasar/app-webpack 3.11+
/**
* @return {Promise<'npm' | 'yarn' | 'pnpm' | 'bun'>}
*/
await api.getNodePackagerName()
内容粘贴
api.hasPackage
确定主机应用程序中是否安装了一些包,通过语义版本控制条件。
语义版本控制条件示例:'1.x || >=2.5.0 || 5.0.0 - 7.2.3'
。
/**
* @param {string} packageName
* @param {string} (optional) semverCondition
* @return {boolean} package is installed and meets optional semver condition
*/
if (api.hasPackage('vuelidate')) {
// hey, this app has it (any version of it)
}
if (api.hasPackage('quasar', '^2.0.0')) {
// hey, this app has Quasar UI v2 installed
}
内容粘贴
api.hasExtension
检查是否安装了另一个应用程序扩展。
/**
* Check if another app extension is installed
*
* @param {string} extId
* @return {boolean} has the extension installed.
*/
if (api.hasExtension(extId)) {
// hey, we have it
}
内容粘贴
api.getPackageVersion
获取主机应用程序包的版本。
/**
* @param {string} packageName
* @return {string|undefined} version of app's package
*/
console.log( api.getPackageVersion(packageName) )
// output examples:
// 1.1.3
// undefined (when package not found)
内容粘贴
api.removePath
从应用程序项目文件夹中删除文件或文件夹(应用扩展已安装且不再需要)。
请注意这一点,不要删除会导致开发人员应用程序出现故障的文件。
文件或文件夹的路径需要相对于项目的根文件夹。
/**
* @param {string} __path
*/
api.removePath('my-folder')
内容粘贴
以上示例从应用程序的根目录删除“my-folder”。
api.getPersistentConf
获取此扩展的内部持久配置。如果它没有,则返回空对象。
/**
* @return {object} cfg
*/
api.getPersistentConf()
内容粘贴
api.onExitLog
添加一条消息,在 App CLI 完成卸载应用扩展并即将退出后打印。可以多次调用此方法以注册多个退出日志。
/**
* @param {string} msg
*/
api.onExitLog('Thanks for having used my extension')
内容粘贴