当前位置: 首页 > 知识库问答 >
问题:

前端 - rollup打包less如果生成单个css文件?

高山
2024-04-12

rollup打包将less文件转换成css文件, 我要开发一个react组件库,打包后输出esm格式,但是现在所有less都打包成一个文件了,我希望每个css还是单独分开

/**原始结构test    index.tsx    index.less希望输出的结构test    index.js    index.css**/

我用rollup-plugin-postcss 或者rollup-plugin-less都不会输出index.css。要么就是把所有less合并生产一个css, 要么就是用styleInject 添加到head中。

共有1个答案

洪河
2024-04-12

rollup打包less文件生成单个css文件,你需要使用rollup-plugin-css-only插件。这个插件可以将你的less文件转换成单独的css文件,而不是将它们合并成一个文件。

以下是一个示例配置,展示了如何使用rollup-plugin-css-only插件来生成单独的css文件:

import resolve from '@rollup/plugin-node-resolve';import commonjs from '@rollup/plugin-commonjs';import typescript from 'rollup-plugin-typescript2';import postcss from 'rollup-plugin-postcss';import cssOnly from 'rollup-plugin-css-only';export default {  input: 'src/index.tsx',  output: {    file: 'dist/index.js',    format: 'esm',  },  plugins: [    resolve(),    commonjs(),    typescript(),    postcss({      extract: true, // 启用css提取      plugins: [        require('less')(), // 使用less插件      ],    }),    cssOnly({      output: 'dist', // 指定输出目录      rename: (assetPath, originalPath) => {        // 根据原始路径重命名输出文件        const relativePath = originalPath.replace('src/', '');        return relativePath.replace(/\.tsx?$/, '.css');      },    }),  ],};

在上述配置中,我们使用rollup-plugin-postcss插件来处理less文件,并将extract选项设置为true,以启用css提取。然后,我们使用rollup-plugin-css-only插件来将提取的css文件输出到指定目录,并根据原始路径重命名输出文件。

请注意,上述配置中的路径和插件可能需要根据你的项目结构和需求进行适当修改。另外,确保已正确安装所有必需的依赖项,并根据你的项目类型选择适当的插件和配置。

希望这可以帮助你解决问题!如果你还有其他疑问,请随时提问。

 类似资料:
  • 这样并没有在dist目录下生成一个types文件夹,而是在每个模块下都生成了一个types文件夹,造成声明文件重复,请问如何设置才能只在dist文件夹下生成一个声明文件呢?

  • RollupError: Invalid value "umd" for option "output.format" - UMD and IIFE output formats are not supported for code-splitting builds. 问题起因:vitepress内build的时候报错window is not defined,后查明是icon组件内iconfon

  • 问题内容: 尝试搜索此内容,但是使用语法很难。有没有办法在LESS中生成随机数?我检查了文档,却什么也没看到,但想知道是否有人知道技巧或未记录的解决方案。 问题答案: 根据文档: JavaScript评估JavaScript表达式可以评估为.less文件中的值。我们建议您谨慎使用此功能,因为LESS不能通过端口进行编译,这会使LESS难以维护。如果可能,尝试考虑可以添加以实现相同目的的功能,然后在

  • 目前项目打包出来的css通过link引用没使用preload 网上搜了一下使用preload-webpack-plugin插件如下配置也没生效 请问各位大佬如何给css配置预加载

  • const { FtpUpload } = require('ftp-upload') console.log(FtpUpload, 'FtpUpload'); 如果转换成import 会报 EE TypeError: EE is not a constructor 本地命令启动没有问题 "dev:app": "esno ./build/script/startElectron.ts --env=

  • 利用rollup打包vue组件库时 如何引入公共的variable.less文件 并且在生成的时候生成对应的less文件? 以下是文件目录 试了rollup-plugin-less 和 rollup-plugin-postcss 打包的时候依然报错 判断没有@white这个less变了 要如何写才能正常引入? 还有一个问题是 如何才能把这些less文件在打包index.js的同时 打包出一个ind