小程序使用less語法

從去年五月份開始咱們一直在作小程序項目,通過一年的迭代功能已經完善…… 扯遠了,西內
剛開始開發的時候使用wxss書寫樣式代碼,那感受,那效率,PM差點氣離職。
因而咱們開始尋找高效的解決方案(尋找個屁,百度一搜一堆),網上不少解決方案都是在編輯器配置,emmmm 這是真的高效。
因爲確實不習慣改編輯器配置,咱們仍是寫了一個腳本,用來編譯less。(老表,直接上代碼,BB這麼多)。css

一種是lessc編譯,一種是用less的render方法;
小程序儘可能不要引入本地less包,所以lessc/less 都是用的global環境 (恁孃的)。
github地址: node-compile-less 但願給個鼓勵,感謝node

/**
 * @file 小程序編譯less
 *
 */

const fs = require('fs');
const path = require('path');
// const less = require('less');
const {exec} = require('child_process');
const globalLessc = '/Users/yujinjiang/.nvm/versions/node/v14.4.0/bin/lessc';

// 編譯配置
const COMPILE_CONFIG = {
    SOURCE: 'less',
    TARGET: 'wxss'
};

// 編譯目錄
const observedDirs = [
    path.join(__dirname, './pages/'),
    path.join(__dirname, './packageA/'),
    path.join(__dirname, './components/'),
];

// 編譯監聽
observedDirs.forEach(observedDir => {

    // 監聽選項
    const watchOptions = {
        persistent: true,
        recursive: true,
        encoding: 'utf-8'
    };

    fs.watch(
        observedDir,
        watchOptions,
        (eventType, filename) => {
            const ext = filename.slice(filename.lastIndexOf('.') + 1);

            const {
                SOURCE,
                TARGET
            } = COMPILE_CONFIG;

            if (ext === SOURCE) {
                const sourcePath = path.join(observedDir, filename);
                const targetPath = sourcePath.slice(0, sourcePath.lastIndexOf('.') + 1) + TARGET;
                exec(`${globalLessc} ${sourcePath} ${targetPath}`);

                // const encodingOption = {
                //     encoding: 'utf-8'
                // };

                // fs.readFile(
                //     sourcePath,
                //     encodingOption,
                //     (e, data) => {
                //         if (e) {
                //             return;
                //         }
                //
                //         less.render(data)
                //             .then(code => {
                //
                //                 fs.writeFile(
                //                     targetPath,
                //                     code.css,
                //                     encodingOption,
                //                     (e) => {
                //                         if (e) {
                //                             console.log(e);
                //                         }
                //                     }
                //                 );
                //             })
                //             .catch(() => {});
                //     }
                // );
            }
        }
    );
});
相關文章
相關標籤/搜索