鍍金池/ 教程/ 物聯(lián)網(wǎng)/ grunt.file
深入任務(wù)內(nèi)幕
grunt.option
退出碼
創(chuàng)建插件
grunt.file
grunt
快速入門
項(xiàng)目腳手架
使用命令行工具
Gruntfile 實(shí)例
配置任務(wù)
創(chuàng)建任務(wù)
grunt.log
安裝Grunt
grunt.util
grunt.event
常見問題
grunt.config
grunt.task
grunt.template
grunt.fail

grunt.file

這里提供了很多用來讀取或者編輯文件,通過匹配模式遍歷文件系統(tǒng)或者查找文件的方法。其中很多方法都是對(duì)Node.js中文件操作功能的一次包裝,但是在這里標(biāo)準(zhǔn)化了額外的錯(cuò)誤處理,日志記錄和字符編碼相關(guān)的行為。

注意:通常情況下所有的文件路徑都是相對(duì)于Gruntfile所在目錄來確定,除非當(dāng)前工作目錄使用grunt.file.setBase或者命令行選項(xiàng)--base改變過。

字符編碼

grunt.file.defaultEncoding

用于通過所有的grunt.file方法設(shè)置這個(gè)屬性來改變默認(rèn)的字符編碼。默認(rèn)情況下為'utf8'。如果你改變了這個(gè)值,推薦你盡早在你項(xiàng)目Gruntfile中改變它。

grunt.file.defaultEncoding = 'utf8'

讀寫文件

grunt.file.read

讀取并返回指定文件內(nèi)容。它會(huì)返回一個(gè)字符串,通常這種情況下它會(huì)返回一個(gè)Buffer(緩沖區(qū)),除非options.encodingnull。

grunt.file.read(filepath [, options])

options對(duì)象可以指定下面這些屬性:

var options = {
    // If an encoding is not specified, default to grunt.file.defaultEncoding.
    // If specified as null, returns a non-decoded Buffer instead of a string.
    encoding: encodingName
};

grunt.file.readJSON

讀取指定文件的內(nèi)容,它會(huì)將數(shù)據(jù)作為JSON信息解析并返回結(jié)果??梢圆榭?code>grunt.file.read來了解它所支持的選項(xiàng)列表。

grunt.file.readJSON(filepath [, options]);

grunt.file.readYAML

讀取指定文件的內(nèi)容,它會(huì)將數(shù)據(jù)作為YAML解析并返回結(jié)果。 同樣可以查看grunt.file.read來了解它所支持的選項(xiàng)。

grunt.file.write

寫入指定的內(nèi)容到一個(gè)文件中,必要的情況下它會(huì)創(chuàng)建一個(gè)中介目錄。字符串會(huì)使用指定字符編碼進(jìn)行編碼,Buffters會(huì)按照其指定的方式寫入磁盤。

如果指定了--no-write命令行選項(xiàng),不會(huì)真正寫入文件中。

grunt.file.write(filepath, contents [, options])

options對(duì)象可以指定下面這些屬性:

var options = {
    // If an encoding is not specified, default to grunt.file.defaultEncoding.
    // If `contents` is a Buffer, encoding is ignored.
    encoding: encodingName
};

grunt.file.copy

復(fù)制一個(gè)源文件到目標(biāo)路徑指向的目錄中,必要的情況下它也會(huì)創(chuàng)建一個(gè)中介目錄。

如果指定了--no-write命令行選項(xiàng),它不會(huì)真正寫入文件中。

grunt.file.copy(srcpath, destpath [, options]);

options對(duì)象可以指定下面這些屬性:

var options = {
    // If an encoding is not specified, default to grunt.file.defaultEncoding.
    // If null, the `process` function will receive a Buffer instead of String.
    encoding: encodingName,
    // The source file contents and file path are passed into this function,
    // whose return value will be used as the destination file's contents. If
    // this function returns `false`, the file copy will be aborted.
    process: processFunction,
    // These optional globbing patterns will be matched against the filepath
    // (not the filename) using grunt.file.isMatch. If any specified globbing
    // pattern matches, the file won't be processed via the `process` function.
    // If `true` is specified, processing will be prevented.
    noProcess: globbingPatterns
};

grunt.file.delete

刪除指定文件路徑,它會(huì)以遞歸的方式刪除指定的文件和目錄。

它不會(huì)刪除當(dāng)前工作目錄或者當(dāng)前工作目錄之外的文件,除非指定了--force命令行選項(xiàng)。

如果指定了--no-write命令行選項(xiàng),文件路徑不會(huì)真正刪除。

grunt.file.delete(filepath [, options]);

options對(duì)象可以指定下面這些屬性:

var options = {
    // Enable deleting outside the current working directory. This option may
    // be overridden by the --force command-line option.
    force: true
};

目錄操作

grunt.file.mkdir

類似mkdir -p操作??梢允褂萌我鈪⒖寄夸泟?chuàng)建一個(gè)新目錄。如果沒有指定mode選項(xiàng),則默認(rèn)為0777 & (~process.umask())

如果指定了--no-write命令行選項(xiàng),則不會(huì)真正創(chuàng)建目錄。

grunt.file.mkdir(dirpath [, mode])

grunt.file.recurse

在目錄中以遞歸方式執(zhí)行為每個(gè)文件指定的回調(diào)函數(shù)。

grunt.file.recurse(rootdir, callback)

回調(diào)函數(shù)可以接收以下參數(shù):

function callback(abspath, rootdir, subdir, filename) {
    // The full path to the current file, which is nothing more than
    // the rootdir + subdir + filename arguments, joined.
    abspath
    // The root director, as originally specified.
    rootdir
    // The current file's directory, relative to rootdir.
    subdir
    // The filename of the current file, without any directory parts.
    filename
}

匹配模式

原文為Globbing Patterns,主要是指使用一些匹配模式來操作,因而譯作匹配模式。

通常單獨(dú)指定所有的源文件的路徑往往是不切實(shí)際的,因此Grunt支持通過內(nèi)置的node-glob庫(kù)來根據(jù)文件擴(kuò)展名來選擇文件(也就通配符)。

配置任務(wù)指南的"通配符模式"一節(jié)可以查看更多匹配模式的例子。

grunt.file.expand

返回包含匹配給定通配符模式的文件或者目錄路徑的特殊數(shù)組。這個(gè)方法接收一個(gè)逗號(hào)分割的匹配模式或者一個(gè)匹配模式數(shù)組。如果路徑匹配模式以!開頭,它會(huì)從返回的數(shù)組排除所匹配的項(xiàng)。模式是按指定的順序進(jìn)行處理的, 因此包含和排除文件的順序是明顯的。

grunt.file.expand([options, ] patterns)

通常文件路徑都是相對(duì)于Gruntfile所在目錄的路徑,除非當(dāng)前工作目錄使用grunt.file.setBase或者命令行選項(xiàng)--base改變了。

options對(duì)象支持所有的minimatch庫(kù)提供的選項(xiàng),它還支持其他的一些選項(xiàng)。例如:

  • filter 接受一個(gè)有效的fs.Stats方法名或者一個(gè)已經(jīng)通過了src文件路徑匹配的函數(shù),這個(gè)函數(shù)會(huì)返回truefalse;
  • nonull 會(huì)保留src匹配模式,即使文件匹配失敗。結(jié)合Grunt的-verbose標(biāo)志,這個(gè)選項(xiàng)有助于文件路徑問題的調(diào)試;
  • matchBase 不帶斜線的模式只會(huì)匹配基本的名稱部分。例如,這會(huì)使*.js就像**/*.js一樣;
  • cwd 會(huì)讓模式相對(duì)于當(dāng)前路徑進(jìn)行模式匹配,所有返回的文件路徑也是相對(duì)于當(dāng)前路徑的。

grunt.file.expandMapping

返回一個(gè)src-dest文件映射對(duì)象的數(shù)組。通過所指定的模式來匹配每一個(gè)源文件,然后將匹配的文件路徑加入指定的dest中(dest存放匹配的文件路徑)。這個(gè)文件路徑會(huì)按照指定的選項(xiàng)加工或者重命名過。 查看grunt.file.expand方法文檔可以了解如何指定patternsoptions參數(shù)。

grunt.file.expandMapping(patterns, dest [,options])

注意這個(gè)方法可以用于以編程的方式針對(duì)多任務(wù)的情況生成一個(gè)files數(shù)組,它會(huì)優(yōu)先使用在配置任務(wù)指南中"動(dòng)態(tài)構(gòu)建文件對(duì)象"一節(jié)所描述的語法。

除了支持那些grunt.file.expand方法之外,options對(duì)象還支持下面這些屬性:

var options = {
    // The directory from which patterns are matched. Any string specified as
    // cwd is effectively stripped from the beginning of all matched paths.
    cwd: String,
    // Remove the path component from all matched src files. The src file path
    // is still joined to the specified dest.
    flatten: Boolean,
    // Remove anything after (and including) the first "." in the destination
    // path, then append this value.
    ext: String,
    // If specified, this function will be responsible for returning the final
    // dest filepath. By default, it joins dest and matchedSrcPath like so:
    rename: function(dest, matchedSrcPath, options) {
        return path.join(dest, matchedSrcPath);
    }
};

grunt.file.match

針對(duì)一個(gè)或者多個(gè)文件路徑來匹配一個(gè)或者多個(gè)匹配模式。返回一個(gè)特殊的數(shù)組,這個(gè)數(shù)組包含與指定的通配符模式任意匹配的所有文件路徑。patternsfilepaths參數(shù)可以是一個(gè)單一的字符串或者也可以是一個(gè)字符串?dāng)?shù)組.如果匹配模式以!開頭,就會(huì)從返回的數(shù)組從排除模式匹配的路徑。模式會(huì)按指定的順序進(jìn)行處理,因此包含和排除文件的順序是明顯的。

grunt.file.match([options, ] patterns, filepaths)

options對(duì)象也支持minimatch庫(kù)提供的所有選項(xiàng)。例如:如果options.matchBase為true,即使模式中不帶斜線,這個(gè)模式也會(huì)匹配包含斜線的基本名稱。例如:*.js模式將匹配path/to/file.js文件路徑。

grunt.file.isMatch

這個(gè)方法與grunt.file.match方法包含同樣的簽名和邏輯,但是如果它匹配任意文件,就會(huì)簡(jiǎn)單的返回ture,否則返回false。

文件類型

grunt.file.exists

給定的路徑是否存在?返回一個(gè)布爾值。

就像Node.js的path.join方法,這個(gè)方法會(huì)連接所有的參數(shù)并標(biāo)準(zhǔn)化返回的路徑。

grunt.file.exists(path1 [, path2 [, …]])

grunt.file.isLink

給定的路徑是否表示鏈接?返回一個(gè)布爾值。

就像Node.js的path.join方法,這個(gè)方法也會(huì)連接所有的參數(shù)并標(biāo)準(zhǔn)化返回的路徑。

grunt.file.isLink(path1 [, path2 [, …]])

如果路徑不存在它會(huì)返回false。

gruntfile.isDir

給定的路徑是否是一個(gè)目錄?返回一個(gè)布爾值。

就像Node.js的path.join方法,這個(gè)方法也會(huì)連接所有的參數(shù)并標(biāo)準(zhǔn)化返回的路徑。

grunt.file.isDir(path1 [, path2 [, …]])

如果路徑不存在它也會(huì)返回false。

grunt.file.isFile

給定的路徑是否是一個(gè)文件?返回一個(gè)布爾值。

就像Node.js的path.join方法,這個(gè)方法也會(huì)連接所有的參數(shù)并標(biāo)準(zhǔn)化返回的路徑。

grunt.file.isFile(path1 [,path2 [,...]])

如果給定路徑不存在它也會(huì)返回false。

路徑

grunt.file.isPathAbsolute

給定文件路徑是否是絕對(duì)路徑?返回一個(gè)布爾值。

就像Node.js的path.join方法,這個(gè)方法也會(huì)連接所有的參數(shù)并標(biāo)準(zhǔn)化返回的路徑。

grunt.file.isPathAbsolute(path1 [, path2 [, …]])

grunt.file.arePathsEquivalent

所有指定的路徑是否引用同一路徑?返回布爾值。

grunt.file.arePathsEquivalent(path1 [, path2 [, …]])

grunt.file.doesPathContain

所有指定的子路徑都是否屬于指定的父路徑?返回布爾值。

注意:它并不會(huì)檢查路徑是否真實(shí)存在。

grunt.file.doesPathContain(ancestorPath, descendantPath1 [, descendantPath2 [, …]])

grunt.file.isPathCwd

給定文件路徑是否是CWD目錄[Current Working Directory -> 當(dāng)前工作目錄]?返回一個(gè)布爾值。

就像Node.js的path.join方法,這個(gè)方法也會(huì)連接所有的參數(shù)并標(biāo)準(zhǔn)化返回的路徑。

grunt.file.isPathCwd(path1 [, path2 [, …]])

grunt.file.isPathInCwd

給定的文件路徑是否在CWD中的?注意:CWD并不在CWD中。返回一個(gè)布爾值。

就像Node.js的path.join方法,這個(gè)方法也會(huì)連接所有的參數(shù)并標(biāo)準(zhǔn)化返回的路徑。

grunt.file.isPathInCwd(path1 [, path2 [, …]])

grunt.file.setBase

改變Grunt的當(dāng)前工作目錄(CWD)。默認(rèn)情況下,所有的文件路徑都是相對(duì)于Gruntfile所在目錄的。就像--base命令行選項(xiàng)。

就像Node.js的path.join方法,這個(gè)方法也會(huì)連接所有的參數(shù)并標(biāo)準(zhǔn)化返回的路徑。

外部庫(kù)

來自第三方的庫(kù)

grunt.file.glob

glob - 文件通配符工具。

grunt.file.minimatch

minimatch - 文件匹配模式工具。

grunt.file.findup

findup-sync - 向上搜索的文件匹配模式。

上一篇:退出碼下一篇:快速入門