
Product
A Fresh Look for the Socket Dashboard
We’ve redesigned the Socket dashboard with simpler navigation, less visual clutter, and a cleaner UI that highlights what really matters.
rtl-css-plugin-webpack
Advanced tools
Webpack plugin to use in addition to mini-css-extract-plugin to create a second css bundle, processed to be rtl.
This uses rtlcss under the hood
$ npm install rtl-css-plugin-webpack
Add the plugin to your webpack configuration:
const RtlCssPluginWebpack = require('rtl-css-plugin-webpack');
module.exports = {
entry: path.join(__dirname, 'src/index.js'),
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'bundle.js',
chunkFilename: 'chunk/[name].[hash].js',
},
module: {
rules: [
{
test: /\.css$/i,
use: [MiniCssExtractPlugin.loader, "css-loader"],
},
],
},
plugins: [new MiniCssExtractPlugin(), new RtlCssPluginWebpack()]
};
new RtlCssPlugin({
filename: '[name].rtl.css',
chunkFilename: '[name].rtl.css',
});
filename
Default: [name].rtl.css
This option determines the name of each output CSS file.
chunkFilename
Default: [name].rtl.css
This option determines the name of non-entry chunk files.
The insert option of mini-css-extract-plugin can be used to load non-initial (async) rtl/ltr CSS chunks
Note
It's only applied to dynamically loaded css chunks, if you want to modify link attributes inside html file, please using html-webpack-plugin
const RtlCssPluginWebpack = require('rtl-css-plugin-webpack');
module.exports = {
entry: path.join(__dirname, 'src/index.js'),
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'bundle.js',
chunkFilename: 'chunk/[name].[hash].js',
},
module: {
rules: [
{
test: /\.css$/i,
use: [MiniCssExtractPlugin.loader, "css-loader"],
},
],
},
plugins: [
// generates ltr css files
new MiniCssExtractPlugin({
filename: '[name]-ltr.css',
chunkFilename: 'chunks/[name].[hash]-ltr.css',
// this function is going to be part of bundle to load rtl/ltr css chunk based on html dir attribute
insert: linkTag => {
if (document.documentElement.dir === 'rtl') {
linkTag.href = linkTag.href.replace('-ltr', '-rtl');
}
document.head.appendChild(linkTag);
},
}),
// generates rtl css files
new RtlCssPluginWebpack({
filename: '[name]-rtl.css',
chunkFilename: 'chunks/[name].[hash]-rtl.css',
}),
]
};
We can update webpacks optimization config to avoid duplicate css chunks
module.exports = {
// ... other webpack configs
optimization: {
// ... other optimization
splitChunks: {
cacheGroups: {
// avoids duplication of dynamically loaded css chunks
styles: {
test: /\.(css|scss|less)$/,
enforce: true,
},
},
},
}
}
FAQs
generates rtl css for each css chunk generated by webpack
We found that rtl-css-plugin-webpack demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Product
We’ve redesigned the Socket dashboard with simpler navigation, less visual clutter, and a cleaner UI that highlights what really matters.
Industry Insights
Terry O’Daniel, Head of Security at Amplitude, shares insights on building high-impact security teams, aligning with engineering, and why AI gives defenders a fighting chance.
Security News
MCP spec updated with structured tool output, stronger OAuth 2.1 security, resource indicators, and protocol cleanups for safer, more reliable AI workflows.