
在使用 Rollup 构建组件库时,如果组件之间存在内部依赖关系,可能会遇到无法正确导入的问题。本文将详细介绍如何配置 Rollup,以确保内部组件能够被正确地打包和引用,从而成功构建组件库。主要聚焦于 rollup.config.mjs 的配置,特别是 external 属性的使用,以解决 "Unresolved dependencies" 错误。
在构建组件库时,如果一个组件依赖于另一个组件(例如,Button 组件使用了 Text 组件),Rollup 可能会将内部组件视为外部依赖,导致构建失败,并出现 "Unresolved dependencies" 的警告。这通常是因为 Rollup 无法正确处理组件之间的依赖关系,特别是当组件使用了 CSS 样式时。
解决此问题的关键在于正确配置 rollup.config.mjs 文件,特别是 external 属性。external 属性用于指定哪些模块应该被视为外部依赖,而不是被打包到组件库中。
步骤 1:理解 external 属性
external 属性接受一个数组,数组中的每个元素可以是一个字符串或一个正则表达式。如果模块的 ID 匹配数组中的任何一个元素,Rollup 就会将其视为外部依赖。
步骤 2:配置 external 属性
对于组件库构建,通常需要将 CSS 文件视为外部依赖,因为它们通常由单独的 CSS 处理工具(如 rollup-plugin-postcss)处理。因此,需要在 rollup.config.mjs 文件中添加 external: [/\.css$/]。
PHP经典实例(第2版)能够为您节省宝贵的Web开发时间。有了这些针对真实问题的解决方案放在手边,大多数编程难题都会迎刃而解。《PHP经典实例(第2版)》将PHP的特性与经典实例丛书的独特形式组合到一起,足以帮您成功地构建跨浏览器的Web应用程序。在这个修订版中,您可以更加方便地找到各种编程问题的解决方案,《PHP经典实例(第2版)》中内容涵盖了:表单处理;Session管理;数据库交互;使用We
453
以下是一个示例 rollup.config.mjs 文件:
import resolve from "@rollup/plugin-node-resolve";
import commonjs from "@rollup/plugin-commonjs";
import typescript from "@rollup/plugin-typescript";
import { terser } from 'rollup-plugin-terser';
import external from 'rollup-plugin-peer-deps-external'
import postcss from 'rollup-plugin-postcss'
import dts from "rollup-plugin-dts";
import packageJson from './package.json';
export default [
{
input: "src/index.ts",
output: [
{
file: packageJson.main,
format: "cjs",
sourcemap: true,
name: 'ui-components'
},
{
file: packageJson.module,
format: "esm",
sourcemap: true,
},
],
plugins: [
resolve(),
commonjs(),
external(),
postcss(),
terser(),
resolve(),
typescript({ tsconfig: "./tsconfig.json" }),
],
},
{
input: "dist/esm/types/index.d.ts",
output: [{ file: "dist/index.d.ts", format: "esm" }],
external: [/\.css$/], // 关键配置:将 CSS 文件视为外部依赖
plugins: [dts.default()],
},
];步骤 3:检查 tsconfig.json 文件
确保 tsconfig.json 文件中的 paths 属性配置正确,以便 TypeScript 能够正确解析模块路径。例如:
{
"compilerOptions": {
"target": "es2016",
"jsx": "react",
"module": "ESNext",
"moduleResolution": "node",
"declaration": true,
"emitDeclarationOnly": true,
"sourceMap": true,
"outDir": "dist",
"declarationDir": "types",
"allowSyntheticDefaultImports": true,
"esModuleInterop": true,
"forceConsistentCasingInFileNames": true,
"strict": true,
"skipDefaultLibCheck": true,
"skipLibCheck": true,
"allowImportingTsExtensions": true,
"baseUrl": "src",
"rootDir": "src",
"paths": {
"atoms/*": [
"components/atoms/*"
],
"molecules/*": [
"components/molecules/*"
],
"styles/*": [
"styles/*"
]
}
}
}步骤 4:注意事项
通过正确配置 rollup.config.mjs 文件中的 external 属性,可以将内部组件的 CSS 依赖视为外部依赖,从而解决 Rollup 构建组件库时遇到的 "Unresolved dependencies" 问题。同时,确保 tsconfig.json 文件中的 paths 属性配置正确,以便 TypeScript 能够正确解析模块路径。
以上就是使用 Rollup 构建组件库时解决内部组件导入问题的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号