少ないcssファイルでいっぱいのディレクトリがあります。それらを通常のCSSにコンパイルする最良の方法は何ですか? (展開用)
次のようにコマンドを実行したい:
lessc -r less/ css/
ここで、lesscはlessコンパイラーです(ノードパッケージマネージャー経由でインストールされます)
これを行う方法は、bootstrap=が行うことです-他のすべてをインポートしてコンパイルするファイルがあります。
@import "variables.less";
@import "mixins.less";
次のbashワンライナーを使用して、ディレクトリとそのサブディレクトリ内のすべてのファイルを単一のcssファイル「combined.css」にコンパイルできます。
$ find less_directory/ -name '*.less' -exec lessc {} \; > combined.css
または本番用に縮小:
$ find less_directory/ -name '*.less' -exec lessc -x {} \; > combined.css
複数の少ないファイルを複数のcssファイルにコンパイルする場合-ライナーbashスクリプト:
for file in *.less; do lessc -x --yui-compress -O2 --strict-imports $file `basename $file`.css ; done
コマンドを実行すると、.less.cssファイルのリストが表示されます。
PS:最大で(-O2)を最適化し、(-x)を圧縮して YUI Compressorで縮小します (-yui-compress)厳密なインポート評価(-strict-imports).
[〜#〜] edited [〜#〜]:新しいYUI Compressorバージョンの場合、-02と--yui-compressは非推奨になります。
for file in *.less; do lessc -x --strict-imports $file `basename $file`.css ; done
このbashスクリプトは私のために機能します:
find "$PWD" -name '*.less' | while read line; do
REPLACE=`echo $line | sed "s|\.less|\.css|"`
# echo "$line --> $REPLACE"
(lessc "$line" "$REPLACE" &)
done
ディレクトリ内のすべてのLESSファイルをCSSにコンパイルするために、この非常にシンプルなbashスクリプトを作成しました
#/bin/bash
echo "Compiling all LESS files to CSS"
for file in *.less
do
FROM=$file
TO=${file/.*/.css}
echo "$FROM --> $TO"
lessc $FROM $TO
done
@iloveitalyの作業の上にスクリプトを作成しました。
#!/bin/bash
# file name: lesscdir
if [[ -z $1 || -z $2 ]];then
echo 'both arguments are needed'
exit
fi
find $1 -name '*.less' -printf '%P\n' | while read name; do
FROM=$(echo $1'/'$name)
TO=$(echo $2'/'$name | sed "s|\.less|\.css|")
TO_DIRNAME=$(dirname $TO)
if [ ! -e $TO_DIRNAME ];then
mkdir -p $TO_DIRNAME
fi
echo 'Compiling' $FROM '->' $TO
lessc $FROM $TO
done
その後:
$ chmod +x lesscdir
$ Sudo ln -s $(readlink -f lesscdir) /usr/local/bin/
私はpythonが最良であり、それに関するほとんどの問題を解決していますが、Linux環境でbashを使用することは非常に満足しています。
問題を解決するハック的なスクリプトを作成しました。
#!/usr/bin/env python
#This is responsible for "compiling" less.css files to regular css files for production. It also minifies the css at the same time.
#Usage: give it a start directory as the first parameter and an end directory as the second parameter. It will recursivly run the appropriate command for all css files in the first subdirectory.
import os
import sys
import re
if len(sys.argv) < 3:
sys.exit('ERROR: Too many paths!! No less css compiled')
if len(sys.argv) > 3:
sys.exit('ERROR: Not enough paths!! No less css compiled')
start_dir=os.path.join(os.getcwd(),sys.argv[1])
end_dir=os.path.join(os.getcwd(),sys.argv[2])
pattern=r'\.css$'
pattern=re.compile(pattern)
files_compiled=0
def copy_files(start, end, add=''):
global files_compiled
try:
os.mkdir(end)
except:
pass
for folder in get_immediate_subdirectories(start):
copy_files(os.path.join(start,folder), os.path.join(end+folder), add+folder+'/')
for less in os.listdir(start):
if pattern.search(less):
os.system('lessc -x %s > %s'%(start+less,end+less))
print add+less
files_compiled=files_compiled+1
def get_immediate_subdirectories(dir):
return [name for name in os.listdir(dir)
if os.path.isdir(os.path.join(dir, name))]
理想的には、より良いソリューションがあります。
最近、私は次のようなものを実行する際に問題が発生しています
lessc directory/*.less foo.css
異なるLESSを取得してfoo.cssに出力する代わりに、リストの2番目のファイルを変更します。これは私には問題ありません。
この問題を解決するために、lessm
という新しいフロントエンドを作成しました。
https://github.com/jive/lessm で確認できます。
使用方法は
lessm foo.less foo2.less ../bar/bazz.less -o output.css
素晴らしい npm module が見つかりました! :)
インストールしてください:
$ npm install [-g] lessc-each
それを実行します:
$ lessc-each ‹dir1› ‹dir2›
ここで、‹dir1›はコンパイルするLessファイルのディレクトリであり、‹dir2›は、出力ファイルのディレクトリです。 ‹dir2›が存在しない場合、自動的に作成されます。両方のディレクトリは、コマンドラインの現在のパスに対して相対的でなければなりません。
Shakaranの答えに基づいていますが、.less.cssファイルの代わりに、.cssファイルを作成します(ファイル名にはlessを使用せず、拡張子のみに使用してください)。
for file in *.less; do lessc -x --strict-imports $file `basename $file | sed -e "s/less/css/"` ; done
他のすべての回答を閲覧している間、それらのどれも私のために働きませんでした。私は答えを組み合わせて自分の状況を処理するための良い解決策を見つけました。
最初に、すべての少ないファイルを1つの少ないファイルにコンパイルします。これは、エラーをスローする可能性があるためです(bootstrap oneなど)。
cat less_directory/* > less_directory/combined.less
Lessフォルダーに1つのlessファイルがあるので、問題を引き起こすことなく、その1つのcssをコンパイルできます。
lessc less_directory/combined.less > css/style.css
この後、combined.lessを捨てることを忘れないでください。そうしないと、次のコンパイルが台無しになります。
rm -f less_directory/combined.less
このプロセスをバッチスクリプトにすることで自動化できます
すべてのLESSファイルをWindowsのフォルダーおよびサブフォルダーツリーにコンパイルする場合。次のソリューションは、Windowsでバッチファイルを使用しています。
ファイルcompile-less.bat:@echo
cd ".\pages" for /r %%i in (*.less) do call lessc --clean-css "%%~i" "%%~dpni.min.css" cd ..
編集済みフォルダーおよびサブフォルダー内のすべてのファイルがコンパイルされます。 Windows 10および8.1でテスト済み
現在のフォルダーツリー内の対応するcssファイルに少ないファイルをコンパイルした方法:
find ./ -name '*.less' -type f -exec lessc {} {}.css \; -exec rename -f 's/.less.css/.css/' {}.css \;
たとえば、main.less
フォルダツリーのどこかに、main.css
同じフォルダ内。
ただし、rename
コマンドをインストールする必要があります。 Homebrewを使用してインストールするには:
brew install rename