javascript - CSS 模块被捆绑,但没有使用使用 Rollup underhood 的 TSDX 引用
问题描述
我使用 TSDX 创建了一个 React 库 → https://github.com/deadcoder0904/react-typical
它使用 CSS 模块并将样式附加到 React 库。
捆绑包正确地将 CSS 文件输出到dist/
文件夹中,但它从未真正按应有的方式引用它。
这导致我的样式根本不显示。
这是我的完整tsdx.config.js
:
const postcss = require('rollup-plugin-postcss');
const { terser } = require('rollup-plugin-terser');
const autoprefixer = require('autoprefixer');
const cssnano = require('cssnano');
module.exports = {
rollup(config, options) {
config.plugins.push(
postcss({
modules: true,
plugins: [
autoprefixer(),
cssnano({
preset: 'default',
}),
],
inject: false,
// only write out CSS for the first bundle (avoids pointless extra files):
extract: !!options.writeMeta,
minimize: true,
}),
terser()
);
return config;
},
};
如果您在https://yarnpkg.com/package/@deadcoder0904/react-typical?filesdist/
看到该文件夹,那么您会注意到它有文件,但根本没有引用该文件。index.js
.css
文件夹中的每个.js
文件都一样dist/
。没有文件引用.css
文件和 CSS 代码根本没有捆绑,所以它只是不使用样式。
我该如何解决这个问题?
解决方案
据我了解,通常一个库通常会单独引入组件和样式,并让用户在文档中知道他们是否要使用默认样式,然后也让导入 css 文件,例如:
import ReactTypical from "react-typical"
import "react-typical/dist/react-typical.cjs.development.css"
我猜这和你的情况一样
或者您将默认设置您的样式而不要求他们手动导入,这意味着您必须通过设置来优化您的配置inject: true
,它会将您的 css 上下文导入您的js
文件,然后在运行时执行以将脚本附加到<head />
文档中。然后您更改的配置将如下所示:
postcss({
modules: true,
plugins: [
autoprefixer(),
cssnano({
preset: 'default',
}),
],
// Append to <head /> as code running
inject: true,
// Keep it as false since we don't extract to css file anymore
extract: false,
})
推荐阅读
- angular - 一旦我们提供电子应用程序,浏览器窗口就会关闭
- r - 在shinydashboard中加载RData文件时出现条件面板
- javascript - 对包含数字和字符串的数组进行排序
- javascript - 数组对象数组问题
- android - 如何在 Kotlin Gradle DSL 中为多个模块重用部分 Android 配置?
- javascript - 如何使用 html 或任何浏览器语言在 Internet Explorer 中打开链接?
- c# - 在 ConfigureServices 中使用自定义 HttpClient 和 Polly 策略对核心 API 控制器进行单元测试
- java - map 函数没有在 Apache spark 中被调用
- python - 如何将python字符串中的数字替换为连续数字和相同的新数字以进行重复
- docker - 无法在我的机器上运行 spark (Ubuntu 18.04)