从去年五月份开始我们一直在做小程序项目,经过一年的迭代功能已经完善…… 扯远了,西内
刚开始开发的时候使用wxss书写样式代码,那感觉,那效率,PM差点气离职。
于是我们开始寻找高效的解决方案(寻找个屁,百度一搜一堆),网上很多解决方案都是在编辑器配置,emmmm 这是真的高效。
由于确实不习惯改编辑器配置,我们还是写了一个脚本,用来编译less。(老表,直接上代码,BB这么多)。

一种是lessc编译,一种是用less的render方法;
小程序尽量不要引入本地less包,因此lessc/less 都是用的global环境 (恁娘的)。
github地址: node-compile-less 希望给个鼓励,感谢

/**
 * @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(() => {});
                //     }
                // );
            }
        }
    );
});

十月安徒生
108 声望2 粉丝