应用扩展卸载 API
此页面介绍 src/uninstall.js
文件,其在扩展被卸载时执行。并非所有的应用程序扩展都需要卸载脚本——这是一个可选步骤。
基本文件结构示例:
// 可以是异步的
export default function (api) {
// 下面描述了 "api" 对象的属性和方法
}
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
是一个包含在扩展时的提示答案的对象。有关提示的更多信息,请参阅 Prompts API。
api.resolve
在运行此应用扩展的应用程序内解析路径。消除了导入 path
并自行解析路径的需求。
// 解析到应用程序的根目录
api.resolve.app('src/my-file.js')
// 解析到应用程序/src目录
api.resolve.src('my-file.js')
// 解析到应用程序/public目录
// (@quasar/app-webpack v3.4+ 或 @quasar/app-vite v1+)
api.resolve.public('my-image.png')
// 解析到应用程序/src-pwa目录
api.resolve.pwa('some-file.js')
// 解析到应用程序/src-ssr目录
api.resolve.ssr('some-file.js')
// 解析到应用程序/src-cordova目录
api.resolve.cordova('config.xml')
// 解析到应用程序/src-electron目录
api.resolve.electron('some-file.js')
// 解析到应用程序/src-bex目录
api.resolve.bex('some-file.js')
api.appDir
包含此扩展正在运行的宿主应根目录的完整路径(字符串)。
api.hasTypescript @quasar/app-vite 1.6+ @quasar/app-webpack 3.11+
/**
* @return {Promise<boolean>} 宿主项目是否启用 TypeScript
*/
await api.hasTypescript()
api.hasLint @quasar/app-vite 1.6+ @quasar/app-webpack 3.11+
/**
* @return {Promise<boolean>} 宿主项目是否启用 ESLint
*/
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<string|undefined>} 'npm' | 'yarn' | 'pnpm'
*/
await api.getNodePackagerName()
api.hasPackage
检查宿主应用是否安装了某个包,并且可以通过 semver 条件设置版本。
semver 条件示例:'1.x || >=2.5.0 || 5.0.0 - 7.2.3'
。
/**
* @param {string} packageName
* @param {string} (可选) semver 条件
* @return {boolean} 软件包已安装并满足可选的 semver 条件
*/
if (api.hasPackage('vuelidate')) {
// 应用安装了这个包(任何版本)
}
if (api.hasPackage('quasar', '^2.0.0')) {
// 应用安装了 quasar v2
}
api.hasExtension
检查另一个应用扩展是否通过 npm 安装并由 Quasar CLI 调用。
/**
* 检查另一个应用扩展是否已安装
*
* @param {string} extId
* @return {boolean} 扩展已安装并被调用
*/
if (api.hasExtension(extId)) {
// 是的,我们安装了它
}
api.getPackageVersion
获取宿主应用的版本号
/**
* @param {string} packageName
* @return {string|undefined} 应用程序包的版本
*/
console.log(api.getPackageVersion(packageName))
// 输出示例:
// 1.1.3
// undefined(未找到包时)
api.removePath
从宿主项目中删除一个文件或文件夹
注意这一点,不要删除会破坏开发者应用程序的文件。
参数是相对于项目根目录的相对路径
/**
* @param {string} __path
*/
api.removePath('my-folder')
上面这个示例将会删除项目根目录下的 “my-folder”。
api.getPersistentConf
获取此扩展的内部持久配置。如果没有配置,则返回空对象。
/**
* @return {object} cfg
*/
api.getPersistentConf()
api.onExitLog
api.onExitLog
在 App CLI 完成扩展卸载并即将退出时添加一条日志。可以多次调用以注册多个退出日志。
/**
* @param {string} msg
*/
api.onExitLog('Thanks for having used my extension')