[英]How to use wc in Makefile to watch for changes and run a command at each update?
我正在嘗試讓它在Gnu Make中工作。
我正在測試Makefile中的wc手表。
我有一個文件,每當檢測到更改時都需要編譯該文件,它應該在運行2個並行命令的規則中運行配方。 一個編譯CSS,另一個重新加載瀏覽器。
如果我使用cssnext --watch
的內置watch命令,我的設置工作正常,但是我想用wc
來完成
這是代碼
BIN := node_modules/.bin
all: assets/css/style.css
assets/css/style.css: sources/style.css
@mkdir -p $(@D)
@set -e ; \
while true;\
do \
$(shell wc -c "sources/style.css")\
$(BIN)/cssnext $^ $@& $(BIN)/instant 3000;\
sleep 1;\
done
當我做make all
,它顯示
"D:/Program Files (x86)/Git/bin/sh.exe": line 4: 343: command not found
•∙ listening on port 3000 and waiting for changes
我是GNU Make的新手,我無法理解。
更新:如果我使用bash腳本。 使用以下代碼創建一個watchfile.sh
文件:
#!/bin/bash
clearline="\b\033[2K\r"
command=$@
while sleep 1;
do
# watch each character change
eval "wc -c $command"
echo -n -e "$clearline"
done
然后將Makefile
的代碼替換為
./watchfile.sh $^
$(BIN)/cssnext $^ $@& $(BIN)/instant 3000;
我在外殼中得到以下內容
•∙ listening on port 3000 and waiting for changes 344 sources/style.css
284 node_modules/.bin/cssnext
344 sources/style.css
263 assets/css/style.css
1235 total
我不知道為什么還要查看其他文件,我只指定了sources/styles.css
如果我在css文件中進行更改,它將顯示字符數更改。 但是source / style.css文件未編譯到目標。 Shell僅顯示一次又一次地翻轉wc命令。
我做了一個小小的改動,它反映在wc shell中
322 sources/style.css
284 node_modules/.bin/cssnext
322 sources/style.css
263 assets/css/style.css
1191 total
但是現在的問題是它沒有編譯甚至沒有重新加載瀏覽器。
另一個問題是,現在wc命令不會停止循環。 即使在我執行CTRL+C
。 我必須關閉終端
另外,我寧願不使用watchfile.sh腳本,而是在Makefile中執行它。
如果堅持使用make,只需編寫一個Makefile即可編譯CSS等。這就是make的用途,運行make
並編譯所有已更改的內容。
要使編譯自動進行,可以使用watch
實用程序,該實用程序定期運行make
:
watch make
可以滿足您的需求。 有關此問題的更多信息: 是否有比“手表制造”更聰明的選擇?
我知道它可以與Makefile + NPM一起使用。 雖然我需要完整的Makefile解決方案。 無論如何,現在就可以使用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.