1 天前更新 |typescript

在使用 vue-i18n 时发现 t() 函数是有类型提示的,并且类型就是从 message 对象中推导出来的。于是我也尝试写一下这个类型推导。

假如有一个对象 message :

const message = {
  a: {
    b: {
      c: {
        d: '1'
      }
    },
    b1: '2'
  }
}

从该对象中获取如下类型:

type KeyPath = 'a.b.c.d' | 'a.b1'
1 周前更新 |vite, typescript, eslint

使用路径别名可以大大减少项目中 ../../../ 的情况。但配置路径别名则需要分别对 ViteTypeScriptESLint 进行单独的配置。

  • 配置 Vite 可以避免编译出错(如 npm run devnpm run build)。
  • 配置 TypeScript 可以避免 ts 报错( Cannot find module ... )。
  • 配置 ESLint 可以避免 eslint 报错(如果使用了 airbnb 代码风格)
2 周前更新 |typescript

给定下面数组对象,从该对象中提取出 TNameTAge 两个类型

const students = [
  { name: 'Tom', age: 10 },
  { name: 'Jim', age: 12 },
  { name: 'Jack', age: 11 },
]

// 需要得到的类型:
type TName = 'Tom' | 'Jim' | 'Jack'
type TAge = 10 | 12 | 11
1 个月前更新 |node
import os from 'os'
import { execSync } from 'child_process'

function cmdExists(cmd: string) {
  try {
    execSync(
      os.platform() === 'win32'
        ? `cmd /c "(help ${cmd} > nul || exit 0) && where ${cmd} > nul 2> nul"`
        : `command -v ${cmd}`,
    )
    return true
  }
  catch {
    return false
  }
}
2 个月前更新 |npm

preinstall 从字面意思理解是在 install 之前执行。但到了 NPM 7.0 版本以后就有所不同。

我的项目使用的是 pnpm 包管理器,但在 pnpm install 之前需要执行脚本来处理 package.json 文件,所以用到了 preinstall 脚本,但 preinstall 执行的时机跟预想的不一样: preinstall 实际上是在 install 之后执行的(即安装完依赖之后执行的)。在 pnpm 的 GitHub 里面找到了相似问题的 Issue ,从这里找到了答案,原来是 NPM 的问题。

2 个月前更新 |javascript

老项目使用的是 Vue 2 + ElementUI ,而且项目中又集成很多个子系统。考虑到项目越来越庞大,构建时间也越来越长,再加上技术上难于升级,所以引入了 qiankun 的解决方案。

大致思路是主应用使用 Vue 3 + ElementPlus ,然后将老项目直接作为一个子应用,后期再从老项目中将子系统一个一个的拆出作为子应用。

qiankun 的 API 不多,看起来不难,但在使用中也遇到了不少的问题,本文记录了目前遇到的一些问题。

4 个月前更新 |vue, vite, webpack

现在很多项目都使用了第三方UI组件库,如: Element UI 、 Ant Design Vue 、 View UI 、 Vuetify 等等。引入的方式分为 完整引入按需引入 两种方式。

4 个月前更新 |js

正则表达式中的 (?:pattern)(?=pattern)(?!pattern)(?<=pattern)(?<!pattern) ,容易忘记这里做个笔记。

1 / 18
下一页
© 2016 - 2022 BY 禾惠 粤ICP备20027042号