10

我的朋友设计师正在手动编译他的 LESS 文件并使用 Coda(远程站点)上传它,花费了大量宝贵的时间。他问我:

是否可以自动检测 Linux 服务器上的文件更改并毫不延迟地进行编译?

4

4 回答 4

12

我制作了一个脚本并发布了详细信息:

  • 易于设计师使用
  • 文件保存后立即执行 LESS 编译器,不消耗服务器资源
  • 任何能够远程编辑的编辑器都可以使用此解决方案 - Code、Sublime Text、Textmate

首先,您需要通过在控制台中输入以下内容在服务器上安装“npm”:

sudo apt-get install npm inotify-tools
sudo npm install -g less
sudo nano /usr/local/bin/lesscwatch

将以下内容粘贴到文件中:

#!/bin/bash
# Detect changes in .less file and automatically compile into .css
[ "$2" ] || { echo "Specify both .less and .css files"; exit 1; }
inotifywait . -m -e close_write | while read x op f; do.
    if [ "$f" == "$1" ]; then.
        lessc $f > $2 && echo "`date`: COMPILED";.
    fi
done

保存,退出,然后执行:

sudo chmod +x /usr/local/bin/lesscwatch

你们都完成了。下次您需要使用 LESS 文件时,您需要打开终端(Coda 内置),转到文件的文件夹(使用 cd)并执行以下命令:

lesscwatch main.less main.css

它将输出有关成功编译或错误的信息。享受。

于 2012-11-28T16:45:01.717 回答
3

我已经修改了@romaninsh 的解决方案,以便在更改目录中的任何 Less 文件时重新编译。我还在编译 Less 文件之前添加了一个 echo 语句,以提供一些验证,以在编译需要几秒钟的情况下检测到更改。

/usr/local/bin/lesscwatch:

#!/bin/bash                                                                     
# Detect changes in .less file and automatically compile into .css                 
[ "$2" ] || { echo "Specify both .less and .css files"; exit 1; }                  
inotifywait . -m -e close_write | while read x op f; do                            
    if [[ "$f" == *".less" ]]; then                                                
        echo "Change detected. Recompiling...";                                    
        lessc $1 > $2 && echo "`date`: COMPILED";                                                                                                                           
    fi                                                                             
done 

这更接近地模仿了我习惯的 Mac 版 Less.app 的行为。

使用 Less 进行开发时,我通常在项目的 /style 目录中有一堆文件,并使用覆盖将所有内容编译成单个 .css 文件。

使用示例:

base.less:

@import "overrides.less";
@import "variables.less";

body {
   ...
}

用法同上

lesscwatch base.less base.css
于 2013-02-03T18:11:10.923 回答
2

我想要 bash 脚本,但我在使用 sublime 和 ubuntu 12.10 时遇到了一些麻烦。好吧,这些脚本和Ian_Marcinkowski做的一样,但我确信它在第一次事件后继续工作,并监视所有文件(以某种方式崇高文本,使用 tmp 文件,并且不要更改原始文件 - !?!)。

#!/bin/bash
# Detect changes in .less file and automatically compile into .css
[ "$2" ] || { echo "Specify both .less and .css files"; exit 1; }
inotifywait -m -e close_write . | while read x op f; do
    echo $f
    echo "Change detected. Recompiling...";
    lessc $2 > $3 && echo "`date`: COMPILED";
done

像这样调用脚本:

./monitor.sh  </path/to/dir>  <main.less> <main.css>
于 2014-02-28T20:03:31.413 回答
0

这对我有用:

  1. 安装:
    sudo apt install node-lessenter

2.这是如何使用它。
lessc style.less style.css

于 2021-03-02T23:24:33.290 回答