nodejs 编译less 文件为css到指定目录

该代码示例是一个Node.js脚本,它使用fs,path和child_process模块来遍历指定目录,查找所有的LESS文件,并将它们转换为CSS文件。如果目标目录不存在,脚本会创建它。此脚本支持递归处理子目录中的LESS文件。
摘要由CSDN通过智能技术生成
var fs = require('fs'),
    path = require('path'),
    exec = require('child_process').exec,
    sourcePath, targetPath;

//获取命令行中的路径
process.argv.forEach(function (val, index, array) {
    if (index == 2) {
        sourcePath = val;
    }
    if (index == 3) {
        targetPath = val;
    }
});

var lessc = function (rootPath, targetPath) {
    //取得当前绝对路径
    rootPath = path.resolve(rootPath);
    //目标路径绝对路径
    targetPath = path.resolve(targetPath);
    //判断目录是否存在
    fs.exists(rootPath, function (exists) {
        //路径存在
        if (exists) {
            //获取当前路径下的所有文件和路径名
            var childArray = fs.readdirSync(rootPath);
            if (childArray.length) {
                for (var i = 0; i < childArray.length; i++) {
                    var currentFilePath = path.resolve(rootPath, childArray[i]);
                    var currentTargetPath = path.resolve(targetPath, childArray[i]);
                    //读取文件信息
                    var stats = fs.statSync(currentFilePath);
                    //若是目录则递归调用
                    if (stats.isDirectory()) {
                        lessc(currentFilePath, currentTargetPath);
                    } else {
                        //判断文件是否为less文件
                        if (path.extname(currentFilePath) === '.less') {
                            var newFilePath = path.resolve(targetPath, path.basename(currentFilePath, '.less') + '.css');
                            if (!fs.existsSync(targetPath)) {
                                // 可能需要递归创建文件夹
                                fs.mkdirSync(targetPath, { recursive: true });
                            }
                            console.log(newFilePath);
                            exec('lessc -x ' + currentFilePath + ' > ' + newFilePath);
                        }
                    }
                }
            }
        } else {
            console.log('directory is not exists');
        }
    });
};

lessc('./src', './dist');

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Node.js中,你可以使用`fs`模块来复制文件指定目录。下面是一个简单的示例代码: ```javascript const fs = require('fs'); const path = require('path'); function copyFile(sourcePath, targetPath) { // 构造目标文件路径 const fileName = path.basename(sourcePath); const targetFilePath = path.join(targetPath, fileName); // 创建可读流和可写流 const readStream = fs.createReadStream(sourcePath); const writeStream = fs.createWriteStream(targetFilePath); // 执行文件复制 readStream.pipe(writeStream); // 监听复制完成事件 writeStream.on('finish', () => { console.log('文件复制成功!'); }); // 监听错误事件 writeStream.on('error', (err) => { console.error('文件复制失败:', err); }); } // 使用示例 const sourcePath = '/path/to/source/file.txt'; const targetPath = '/path/to/target/directory'; copyFile(sourcePath, targetPath); ``` 上述代码中,我们首先引入了`fs`和`path`模块。然后定义了一个`copyFile`函数,该函数接受源文件路径和目标目录路径作为参数。 在函数内部,我们使用`path.basename`方法获取源文件文件名,并使用`path.join`方法构造目标文件的完整路径。 接下来,我们使用`fs.createReadStream`创建一个可读流,用于读取源文件的内容。同时,使用`fs.createWriteStream`创建一个可写流,用于将内容写入目标文件。 然后,我们使用`readStream.pipe(writeStream)`将可读流的内容传输到可写流中,实现文件的复制。 最后,我们监听可写流的`finish`事件,表示文件复制完成。如果复制过程中发生错误,我们监听可写流的`error`事件,并打印错误信息。 你可以根据实际情况修改源文件路径和目标目录路径,然后调用`copyFile`函数进行文件复制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值