应用扩展卸载 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')