
Security News
TC39 Advances 11 Proposals for Math Precision, Binary APIs, and More
TC39 advances 11 JavaScript proposals, with two moving to Stage 4, bringing better math, binary APIs, and more features one step closer to the ECMAScript spec.
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
The npm package rtl-css-plugin-webpack receives a total of 253 weekly downloads. As such, rtl-css-plugin-webpack popularity was classified as not popular.
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.
Security News
TC39 advances 11 JavaScript proposals, with two moving to Stage 4, bringing better math, binary APIs, and more features one step closer to the ECMAScript spec.
Research
/Security News
A flawed sandbox in @nestjs/devtools-integration lets attackers run code on your machine via CSRF, leading to full Remote Code Execution (RCE).
Product
Customize license detection with Socket’s new license overlays: gain control, reduce noise, and handle edge cases with precision.