当前位置: 首页 > news >正文

记录vite-plugin-dts打包时无法生成 .d.ts文件问题

项目中build 时候需要生成如下dist中的main.d.ts,
在这里插入图片描述
如果配置vite additionalData会造成预编译scss报错

preprocessorOptions: {
      scss: {
        additionalData: `@import "@/assets/styles/variables.scss";`,
        // 刚开始使用下面两个配置可以打包出来,但是会造成预编译scss报错,所以不能用
        // api: 'modern-compiler', // 使用现代API避免警告
        // silenceDeprecations: ['legacy-js-api'], // 忽略旧API的弃用警告
      }

所以要在vite配置

  plugins: [dts({
    // 指定 tsconfig 文件
    tsconfigPath: 'tsconfig.app.json',
    include: ['src/**/*.ts', 'src/**/*.tsx', 'src/**/*.vue'],
    rollupTypes: true,        // 合并为单个文件(如 main.d.ts)
    copyDtsFiles: true        // 确保复制所有关联的 .d.ts 文件
  }), tailwindcss()],

直接上正确配置
package.json

 "types": "./dist/vue3/main.d.ts",
  "main": "./dist/vue3/moten.umd.cjs",
  "module": "./dist/vue3/moten.js",
  "exports": {
    ".": {
      "types": "./dist/vue3/main.d.ts",
      "import": "./dist/vue3/moten.js",
      "require": "./dist/vue3/moten.umd.cjs"
    },
    "./style": {
      "import": "./dist/vue3/main.css",
      "require": "./dist/vue3/main.css"
    },
    "./vue2": {
      "types": "./dist/vue2/main.d.ts",
      "import": "./dist/vue2/moten.js",
      "require": "./dist/vue2/moten.umd.cjs"
    },
    "./vue2/style": {
      "import": "./dist/vue2/main.css",
      "require": "./dist/vue2/main.css"
    }
  },

vite.config.ts

import { defineConfig } from 'vite'
import { isVue2 } from 'vue-demi'
import vue from '@vitejs/plugin-vue'
import { createVuePlugin } from 'vite-plugin-vue2'
import path, { dirname, resolve } from 'path';
import tailwindcss from '@tailwindcss/vite'
import dts from 'vite-plugin-dts'
import { fileURLToPath } from 'url';

const name = isVue2 ? 'vue2' : 'vue3'
// const __dirname = dirname(fileURLToPath(import.meta.url))

console.log('当前路径:', resolve(__dirname, 'src')); // 确保输出正确路径

// https://vite.dev/config/
export default defineConfig({
  plugins: [isVue2 ? createVuePlugin() : vue(), dts({
    // 指定 tsconfig 文件
    tsconfigPath: 'tsconfig.app.json',
    include: ['src/**/*.ts', 'src/**/*.tsx', 'src/**/*.vue'],
    rollupTypes: true,        // 合并为单个文件(如 main.d.ts)
    copyDtsFiles: true        // 确保复制所有关联的 .d.ts 文件
  }), tailwindcss()],
  resolve: {
    alias: {
      // '@': resolve(__dirname, 'src')
      '@': path.resolve(__dirname, 'src'),
      // '@': resolve('src'),
      // '@': fileURLToPath(new URL('./src', import.meta.url))
    },
  },
  css: {
    // css预处理器
    preprocessorOptions: {
      scss: {
        api: 'legacy',  // 强制使用旧版编译器
        additionalData: `@import "@/assets/styles/variables.scss";`,
        // 给导入的路径最后加上 ; 
        // 刚开始使用下面两个配置可以打包出来,但是会造成预编译scss报错,所以不能用
        // api: 'modern-compiler', // 使用现代API避免警告
        // silenceDeprecations: ['legacy-js-api'], // 忽略旧API的弃用警告
      }
    }
  },
  build: {
    cssCodeSplit: true, // 启用 CSS 代码分割
    outDir: `dist/${name}`,
    lib: {
      entry: resolve(__dirname, 'src/main.ts'),
      name: 'moten',
      // 将添加适当的扩展名后缀
      fileName: 'moten',
      formats: ['es']
    },
    rollupOptions: {
      // 确保外部化处理那些
      external: ['vue', 'vue-demi'],
      output: {
        // 在 UMD 构建模式下为这些外部化的依赖
        // 提供一个全局变量
        globals: {
          vue: 'Vue',
          'vue-demi': 'vue-demi'
        },
        exports: 'named',
      },
    },
  },
})

tsconfig.app.json

{
  "extends": "@vue/tsconfig/tsconfig.dom.json",
  "compilerOptions": {
    "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo",
    "baseUrl": "./",
    "paths": {
      "@/*": ["src/*"]
    },
    "composite": true,
    "declaration": true, // 核心:必须开启
    "emitDeclarationOnly": true, // 可选:仅生成声明文件
    /* Linting */
    "strict": true,
    "noUnusedLocals": true,
    "noUnusedParameters": true,
    "noFallthroughCasesInSwitch": true,
    "noUncheckedSideEffectImports": true
  },
  "include": ["src/**/*.ts", "src/**/*.tsx", "src/**/*.vue"]
}


文章转载自:
http://buprestid.kjawz.cn
http://broomrape.kjawz.cn
http://beerburst.kjawz.cn
http://behaviorist.kjawz.cn
http://bartizan.kjawz.cn
http://abolitionize.kjawz.cn
http://backpat.kjawz.cn
http://chateau.kjawz.cn
http://abort.kjawz.cn
http://barmecidal.kjawz.cn
http://afterpiece.kjawz.cn
http://avow.kjawz.cn
http://aftermath.kjawz.cn
http://algid.kjawz.cn
http://chitinous.kjawz.cn
http://bolometer.kjawz.cn
http://archival.kjawz.cn
http://chronologer.kjawz.cn
http://aerocab.kjawz.cn
http://bengalee.kjawz.cn
http://acquiesce.kjawz.cn
http://blanketflower.kjawz.cn
http://anastrophe.kjawz.cn
http://aiche.kjawz.cn
http://adytum.kjawz.cn
http://bivalve.kjawz.cn
http://amd.kjawz.cn
http://bridgehead.kjawz.cn
http://calipee.kjawz.cn
http://analog.kjawz.cn
http://www.dtcms.com/a/100560.html

相关文章:

  • Numpy常见bug
  • 定时器的定义
  • linux用户组和用户
  • MyBatis复杂查询——一对一、一对多
  • AF3 FeaturePipeline类解读
  • 经典动态规划问题:爬楼梯的多种解法详解
  • 基于大模型的知识图谱搜索的五大核心优势
  • 每日c/c++题 备战蓝桥杯(二分答案模版)
  • 函数指针在C++遍历函数中的写法和应用(直接在函数中定义函数指针)。
  • Python调用手机摄像头检测火焰烟雾的三种方法
  • python定时调度升级
  • 使用 Ansys Discovery 可视化液体池中的水流
  • ES拼音分词自动补全实现
  • LLMs之PE:《Tracing the thoughts of a large language model》翻译与解读
  • 单例模式解析
  • 畅享电脑流畅运行:深度卸载、智能监视与空间释放
  • JS绘制叠加图片
  • 04_SQL概述及DDL
  • docker镜像拉取失败
  • Foldseek快速蛋白质结构比对
  • 计算机组成原理笔记(八)——2.4十进制和数串的表示
  • D4RL库的安装历程及成功经验
  • Golang并发编程:Data Race检测与解决方案
  • Qt非阻塞延时实现
  • 基于 GEE 的区域降水数据可视化:从数据处理到等值线绘制
  • java连接opcua
  • 关于单片机IAP升级的那点事儿|智能设置中断向量表
  • PyTorch单机多卡训练(DataParallel)
  • 人工智能通识速览一(神经网络)(编辑中)
  • mysql中将外部文本导入表中过程出现的错误及解决方法