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

npm包css添加前缀?

岳硕
2023-10-10

写了一个npm包,father打包,担心其中的css会影响到业务方,怎么快速给类名添加统一前缀

共有2个答案

宁弘亮
2023-10-10

像这么做:https://github.com/cnpm/cnpmweb/pull/21#issuecomment-1682624787

image

齐鸿光
2023-10-10

你可以使用自动化工具来给CSS类名添加统一的前缀,以避免类名冲突和提高代码的可维护性。以下是一种可能的方法:

  1. 创建一个文件,例如 prefix-css-classes.js,并在其中添加以下代码:
const fs = require('fs');const path = require('path');const prefix = 'your-prefix-'; // 替换成你自己的前缀const filePath = 'path/to/your/css/file.css'; // 替换成你的CSS文件路径function addPrefixToClassNames(cssContent) {  const classNames = cssContent.match(/[A-Za-z0-9-_]+/g);  if (classNames) {    const prefixedClassNames = classNames.map(className => {      return prefix + className;    });    const prefixedCssContent = cssContent.replace(/([A-Za-z0-9-_]+)/g, (match, p1) => {      return prefixedClassNames.find(className => className.includes(p1)) || match;    });    return prefixedCssContent;  }  return cssContent;}fs.readFile(path.resolve(process.cwd(), filePath), 'utf8', (err, data) => {  if (err) {    console.error('Error reading CSS file:', err);    return;  }  const cssContent = data;  const prefixedCssContent = addPrefixToClassNames(cssContent);  fs.writeFile(path.resolve(process.cwd(), filePath), prefixedCssContent, 'utf8', err => {    if (err) {      console.error('Error writing prefixed CSS file:', err);    } else {      console.log('CSS classes prefixed successfully!');    }  });});
  1. 在终端中,进入你的项目目录,并运行以下命令:
npx webpack --config webpack.config.js

其中 webpack.config.js 是一个自定义的 webpack 配置文件,可以包含以下内容:

const path = require('path');const CssMinimizerPlugin = require('css-minimizer-webpack-plugin');const TerserPlugin = require('terser-webpack-plugin');module.exports = {  mode: 'production',  entry: './src/index.js', // 替换成你的入口文件  output: {    filename: 'bundle.js',    path: path.resolve(__dirname, 'dist'),  },  module: {    rules: [      {        test: /\.css$/i,        use: [          'style-loader',          { loader: 'css-loader', options: { minimize: true } }, // 启用 CSS 压缩        ],      },    ],  },  plugins: [    new CssMinimizerPlugin(), // 用于 CSS 压缩的插件  ],  optimization: {    minimize: true, // 启用代码压缩和优化功能    minimizer: [new TerserPlugin()], // 使用 TerserPlugin 进行 JavaScript 的压缩和优化  },};
 类似资料:
  • 问题内容: 有没有办法将javascript文件中的字符串中的css添加到使用javascript的文档的开头? 假设我们有一个网页,其中包含一个灯箱脚本,该脚本需要一个css文件才能运行。 现在,添加此css文件将使css文件下载,即使对于未启用js的用户也是如此。 我知道我可以使用脚本动态加载css文件,但这也意味着将有2个http请求,并且在文件中几乎没有css的情况下,我发现这种效率低下。

  • 问题内容: 我有一些代码: 我正在尝试通过使用JSON来应用这样的行(如jQuery文档中所示)或完全删除供应商前缀版本来改善此类行。 更改元素上的CSS属性时,jQuery的方法是否自动应用任何必需的供应商前缀? 问题答案: 正如@zeroflagL所写,自jQuery1.8.0起确实添加了浏览器特定的前缀。 在早期版本中,jQuery不会自动完成此操作。您将必须自己完成操作,也可以使用jQue

  • 将之前下载好的nutz,druid,mysql的jar包,放入WebContent/WEB-INF/lib目录下 手册关联(选修) Nutz 包结构

  • 问题内容: 现在,我正在通过jquery加载iframe: 我有一个自定义样式表,希望将其应用于该页面。iframe中的页面不在同一域中,这就是为什么它很棘手的原因。我找到了允许您添加单个标签但不能添加整个样式表的解决方案。 编辑: 有问题的页面通过Mobile Safari 加载,因此跨域策略不适用。 问题答案: 基于解决方案您已经找到了如何将CSS应用于iframe?: 或更多jqueryis

  • 我尝试添加外部css,但不是work属性, 我正在使用prestashop版本1.7。4.3 在install()函数中,我调用钩子 在钩子里面,我注册了css和js文件 在hookBackOfficeHeader()中,我没有任何问题,但在hookDisplayHeader()中,我不想注册字体。 我尝试使用registerStylesheet()来添加CSS(),但根本不起作用。 为什么这两种

  • 在CodeIgniter中添加JavaScript和CSS(层叠样式表)文件非常简单。 你必须在根目录中创建JS和CSS文件夹,并复制JS文件夹中的所有.js文件和CSS文件夹中的.css文件,如图所示。 例如,假设您已经创建了一个JavaScript文件sample.js和一个CSS文件style.css 。 现在,要将这些文件添加到视图中,请在控制器中加载URL帮助程序,如下所示。 $this