從去年五月份開始咱們一直在作小程序項目,通過一年的迭代功能已經完善…… 扯遠了,西內
剛開始開發的時候使用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(() => {}); // } // ); } } ); });