Initial commit: Falcon React v5.1.0 template
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
import path from 'path';
|
||||
import fs from 'fs';
|
||||
import * as sass from 'sass';
|
||||
import rtlcss from 'rtlcss';
|
||||
|
||||
const compileSCSS = () => ({
|
||||
name: 'compile-scss',
|
||||
configureServer(server) {
|
||||
const scssWatcher = server.watcher;
|
||||
const scssGlob = path.resolve(__dirname, 'src/assets/scss/**/*.scss');
|
||||
scssWatcher.add(scssGlob);
|
||||
|
||||
const scssFiles = [path.resolve(__dirname, 'src/assets/scss/theme.scss')];
|
||||
|
||||
const compileSCSSToCSS = async file => {
|
||||
const result = await sass.compileAsync(file, { style: 'expanded' });
|
||||
const fileName = path.basename(file, path.extname(file));
|
||||
|
||||
// Path for LTR CSS
|
||||
const cssPath = path.resolve(__dirname, `public/css/${fileName}.css`);
|
||||
fs.mkdirSync(path.dirname(cssPath), { recursive: true });
|
||||
fs.writeFileSync(cssPath, result.css);
|
||||
|
||||
// Generate RTL CSS from LTR CSS
|
||||
const rtlResult = rtlcss.process(result.css);
|
||||
const rtlCssPath = path.resolve(
|
||||
__dirname,
|
||||
`public/css/${fileName}.rtl.css`
|
||||
);
|
||||
fs.writeFileSync(rtlCssPath, rtlResult);
|
||||
};
|
||||
|
||||
scssWatcher.on('change', file => {
|
||||
|
||||
if (file.endsWith('.scss')) {
|
||||
scssFiles.map(file => {
|
||||
compileSCSSToCSS(file);
|
||||
});
|
||||
server.hot.send({
|
||||
type: 'full-reload'
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
scssFiles.map(file => {
|
||||
compileSCSSToCSS(file);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
export default compileSCSS;
|
||||
Reference in New Issue
Block a user