如果你把 LESS 和 CSS 文件存儲在同一個目錄,配置很簡單,但我想用不同的路徑為我的源目錄和目標(biāo)目錄,這個地方就有點問題了,所以在這里,我想我把發(fā)現(xiàn)的問題記錄下來。
如果您指定一個不同的 "src" 和 "dest" 的目錄,您還必須提供 "prefix" 選項,它必須匹配跟在您的目標(biāo)目錄中后面的目錄。下面是這個例子可以更好的讓你理解:
var lessMiddleware = require("less-middleware"); app.use(lessMiddleware({ src: __dirname + "/less", dest: __dirname + "/public/css", prefix: "/css", force: true })); app.use(express.static(__dirname + "/public"));
在這個例子中,我把源目錄配置為我的應(yīng)用程序的根目錄下的 "/less" 目錄,并讓 CSS 輸出到 "/public/css 目錄。此外,你還需要指定 "prefix" 屬性,以匹配跟在 "/public" 后面的目錄,即 "/css" 目錄。
你還可以指定其它參數(shù),上面指定了 force 參數(shù),讓每次請求的時候重新編譯 LESS 文件,再結(jié)合自動刷新功能,這樣在開發(fā)的時候修改樣式代碼都可以有即時的效果。
最后在頁面上引用 CSS 文件就和正常的一樣了:
<link rel="stylesheet", type="text/css", href="css/styles.css">
這邊文章發(fā)布的時候,less-middleware 已更新到到 1.0.3 版本,上面的配置是針對 0.1.x 的,下面給大家介紹如果從 0.1.x 遷移到 1.0.x。
首先,也是重要的變化——源目錄參數(shù)的變化,之前是放在 options 參數(shù)里的,如下:
lessMiddleware({ src: path.join(__dirname, '/public') })
因為源目錄是必備參數(shù),所以升級之后作為中間件的第一個參數(shù),如下:
lessMiddleware(path.join(__dirname, '/public'))
第二個變化是中間件參數(shù)和 LESS 參數(shù)分離,這樣參數(shù)結(jié)構(gòu)更清晰明了,如下:
lessMiddleware(source, [{options}], [{parserOptions}], [{compilerOptions}])
options 參數(shù)是提供給中間件使用的,而后面兩個參數(shù)對象不會影響中間件,是傳遞給 LESS 解析和編譯器的。
在這個調(diào)整之后,對應(yīng)參數(shù)定義方式也要相應(yīng)的調(diào)整,下面是一些對應(yīng)的修改:
compress: 從 options 移除,需要在 compilerOptions 中定義;
dumpLineNumbers: 從 options 移除,需要再 parserOptions 中定義;
optimization: 從 options 移除,需要再 parserOptions 中定義;
paths: 從 options 移除,需要再 parserOptions 中定義;
preprocessor: 已經(jīng)被移動到 preprocessor.less 中進行定義;
relativeUrls: 從 options 移除,需要再 parserOptions 中定義;
sourceMap: 從 options 移除,需要在 compilerOptions 中定義;
yuicompress: 從 options 移除,需要在 compilerOptions 中定義;
第三個變化是新增加了參數(shù),同時移除了 prefix 和 treeFunctions 參數(shù),讓你可以更靈活的進行配置,如下:
postprocess.css: 在被保存之前,修改 CSS 編譯輸出;
preprocess.less: 在 LESS 被解析和編譯前進行修改;
preprocess.path: 在被文件系統(tǒng)加載前,修改 LESS 路徑;
有了這幾個參數(shù),我們之前使用 prefix 實現(xiàn)的功能可以用下面的方式達到同樣的效果:
preprocess: { path: function(pathname, req) { return pathname.replace(/^\/less\//, '/css'); } }
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com