UNPKG

@mypaas/hcm-cli

Version:

Vant Cli 是一个 Vue 组件库构建工具,通过 Vant Cli 可以快速搭建一套功能完备的 Vue 组件库。

49 lines (48 loc) 1.72 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.compileLess = void 0; const less_1 = require("less"); const fs_extra_1 = require("fs-extra"); // less plugin to resolve tilde class TildeResolver extends less_1.FileManager { loadFile(filename, ...args) { filename = filename.replace('~', ''); return less_1.FileManager.prototype.loadFile.apply(this, [filename, ...args]); } } const TildeResolverPlugin = { install(lessInstance, pluginManager) { pluginManager.addFileManager(new TildeResolver()); } }; const CssVarOperationPlugin = { install({ tree: { Call, Anonymous, Expression }, visitors }, pluginManager) { const call = (name, ...args) => new Call(name, [new Expression(args)]); class Visitor { constructor() { this.native = new visitors.Visitor(this); this.isPreEvalVisitor = true; this.isReplacing = true; } run(root) { return this.native.visit(root); } visitOperation(node) { return call('calc', node.operands[0], new Anonymous(node.op), node.operands[1]); } visitNegative(node) { return call('calc', new Anonymous('-1'), new Anonymous('*'), node.value); } } pluginManager.addVisitor(new Visitor()); } }; async function compileLess(filePath) { const source = fs_extra_1.readFileSync(filePath, 'utf-8'); const { css } = await less_1.render(source, { filename: filePath, plugins: [TildeResolverPlugin, CssVarOperationPlugin] }); return css; } exports.compileLess = compileLess;