日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Grunt 入门指南5:项目脚手架

發布時間:2024/4/15 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Grunt 入门指南5:项目脚手架 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Project Scaffolding 項目腳手架

grunt-init

Grunt-init 是一個用來生成項目的腳手架工具. 它將基于當前環境以及命令的問答結果創建完整的項目目錄結構.實際生成的項目文件和內容依賴于所選擇的模版以及問答結果.

Installation 安裝

開始使用grunt-init之前,你需要全局安裝grunt-init

npm install -g grunt-init

安裝好后就可以在任意目錄使用grunt-init命令.

Usage 使用

  • 使用grunt-init --help可以得到程序幫助以及可用的模版列表.
  • 使用grunt-init TEMPLATE可以基于指定的模版生成項目
  • grunt-init /path/to/TEMPLATE?基于指定位置的模版生車項目

注意大多數模版都會在當前目錄產生文件,所以請確認在新目錄執行以確保不會覆蓋你已有的文件.

Installing templates 安裝模版

一旦你的模版安裝到了~/.grunt-init/目錄(windows下是%USERPROFILE%\.grunt-init\)下, 就可以直接通過grunt-init來使用.推薦使用git克隆模版到這個目錄中.比如,安裝grunt-init-jquery模版可以像這樣:

git clone git@github.com:gruntjs/grunt-init-jquery.git ~/.grunt-init/jquery

注意,如果你克隆時修改了模版的目錄名, 使用grunt-init的時候就要用修改后的目錄名

下面的模版是由官方來維護的: * grunt-init-commonjs * grunt-init-gruntfile * grunt-init-gruntplugin * grunt-init-jquery * grunt-init-node

Custom templates 自定義模版

你可以創建和使用自定義模版,你的模版也要構建成前面所提及的結構.

一個叫my-template的示例模版會有如下的文件結構:

  • my-template/template.js?- 主模版文件.
  • my-template/rename.json?- 模版特殊的重命名規則,由模版處理.
  • my-template/root/?- 目錄中文件將被拷貝到目標路徑.

假設這些文件存在于?/path/to/my-template, 使用命令grunt-init /path/to/my-template將會處理這個模版.多個不同名的模版可以存在于同個目錄,就像內建的模版那樣.

此外,如果你把自定義模版放到你的~/.grunt-init/目錄中,就可以直接使用grunt-init my-template.

Copying files 拷貝文件

只要一個模版使用了init.fileToCopy和init.copyAndProcess方法,在初始化模版執行的時候,任何在root/子目錄的文件都會被拷貝到當前目錄中.

注意所有已經拷貝的文件將會被模版處理,任何{% %}模版會收集props數據再次處理,除非設置了noProgress屬性. 請參考jquery template的例子.

Renaming or excluding template file 重命名或者排除模版文件

rename.json描述了sourcepath到destpath的重命名映射.sourcepath必須是一個相對于root/目錄的需要拷貝的文件路徑,但是destpath可以包含{% %}模版來描述目標路徑.

如果destpath被指定為false,該文件將不會被拷貝,同樣,srcpath也支持 glob 模式.

Specifying default prompt answers 指定默認的提示答案

每次初始化提示,都會有一個硬編碼的默認值或者查看當前環境來嘗試確定一個默認值. 如果你希望覆蓋一個特定提示的默認值,你可以改~/.grunt-init/defaults.json(windows下為%USERPROFILE%\.grunt-init\defaults.json)文件.

例如,我的defaults.json看起來像這樣,因為我想用一個比默認名字稍微不同的名字, 并且排除掉我的email地址,以及自動指定一個作者url.

{"author_name": "\"Cowboy\" Ben Alman","author_email": "none","author_url": "http://benalman.com/" }

Defining an init template 定義init模版

exports.description

模版的摘要描述將會在用戶執行grunt init或者grunt-init的時候顯示在可用模版的模版名字的后面.

exports.description = descriptionString;

exports.notes

如果指定了這個可選項,這個可選的擴展描述將會出現的任何提示的后面.你可以用它來給用戶解釋命名慣例,哪些選項是可選的還是必須等你等.

exports.warnOn

如果這個可選項(但是推薦設置)的通配符模式或者模式數組匹配成功, Grunt將會終止并且提示用戶可以通過--force選項來繼續操作. 這在初始化模版時會覆蓋已存在的同名文件時很有用.

exports.warnOn = 'Gruntfile.js'; // Warn on a Gruntfile.js file. exports.warnOn = '*.js'; // Warn on any .js file. exports.warnOn = '*'; // Warn on any non-dotfile or non-dotdir. exports.warnOn = '.*'; // Warn on any dotfile or dotdir. exports.warnOn = '{.*,*}'; // Warn on any file or dir (dot or non-dot). exports.warnOn = '!*/**'; // Warn on any file (ignoring dirs). exports.warnOn = '*.{png,gif,jpg}'; // Warn on any image file.// This is another way of writing the last example. exports.warnOn = ['*.png', '*.gif', '*.jpg'];

exports.template

exports屬性們在這個函數之外被定義,而所有實際的初始化代碼都在放在里面.三個參數會傳入這個函數,grunt參數是一個grunt對象的引用,包含了所有grunt的方法和庫.init參數是一個對象,包含了init模版的方法和屬性.done參數是一個函數,在初始化模版完成之后必須調用.

exports.template = function(grunt, init, done) {// See the "Inside an init template" section.//里面的內容,參考 “初始化模版的內部” };

Inside an init template 在init模版的內部

init.addLicenseFiles

為files對象添加一個適當的許可

var files = {}; var licenses = ['MIT']; init.addLicenseFiles(files, licenses); // files === {'LICENSE-MIT': 'licenses/LICENSE-MIT'}

init.availableLicenses

返回一個可用許可的數組

var licenses = init.availableLicenses(); // licenses === [ 'Apache-2.0', 'GPL-2.0', 'MIT', 'MPL-2.0' ]

init.copy

拷貝文件,你可以給定一個相對或者絕對的源文件路徑,和一個可選的相對的目標路徑,以及一個可選的回調來文件內容.

init.copy(srcpath[, destpath], options)

init.copyAndProcess

迭代所有的傳遞進來的文件,把源文件拷貝到目標路徑, 并處理文件內容.

init.copyAndProcess(files, props[, options])

init.defaults

來自defaults.json的用戶指定的默認初始值

init.defaults

init.destpath

返回目標地址的絕對路徑

init.destpath()

init.expand

等同于 grunt.file.expand

返回一個去重的數組, 數組里是所有匹配了給定的通配符的文件或者目錄. 這個方法同樣接受逗號分號的通配符或者通配符組成的數組. 模式開始于!的將會排除出返回的數組. 模式會按提供的數序處理,所以(使用多個通配符時)包含和排除的順序很重要.

init.expand([options, ] patterns)

init.filesToCopy

返回一個對象,對象包含了所有拷貝到相對和絕對路徑的,改名(或者省略的)符合rename.json(如果存在的話)規則的文件.

var files = init.filesToCopy(props); /* files === { '.gitignore': 'template/root/.gitignore', '.jshintrc': 'template/root/.jshintrc', 'Gruntfile.js': 'template/root/Gruntfile.js', 'README.md': 'template/root/README.md', 'test/test_test.js': 'template/root/test/name_test.js' } */

init.getFile

獲取一個獨立任務的文件路徑

init.getFile(filepath[, ...])

init.getTemplates

返回一個包含所有可用的模版的對象.

init.getTemplates()

init.initSearchDirs

初始化目錄并搜索可用模版.template是模版的地址. 同樣包含了~/.grunt-init/和grunt-init的初始化任務核心.(這段特么的不會翻譯了!)

init.initSearchDirs([filename])

init.process

啟動一個進程來開始提示.

init.process(options, prompts, done) init.process({}, [// Prompt for these valuesinit.prompt('name'),init.prompt('description'),init.prompt('version') ], function(err, props) {// All finished, do something with the properties });

init.prompt

為用戶展示一個帶有默認值的提示

init.prompt(name[, default])

init.prompts

返回一個所有提示的對象

var prompts = init.prompts;

init.readDefaults

讀入來自task文件(如果存在)的默認JSON, 合并他們到一個數據對象.

init.readDefaults(filepath[, ...])

init.renames

模版的重命名規則

var renames = init.renames; // renames === { 'test/name_test.js': 'test/{%= name %}_test.js' }

init.searchDirs

返回一個模版的搜索路徑數組

var dirs = init.searchDirs; /* dirs === [ '/Users/shama/.grunt-init', '/usr/local/lib/node_modules/grunt-init/templates' ] */

init.srcpath

根據文件名搜索初始化模版路徑,并且返回一個絕對路徑

init.srcpath(filepath[, ...])

init.userDir

返回用戶的模版絕對路徑

var dir = init.userDir(); // dir === '/Users/shama/.grunt-init'

init.writePackageJSON

保存一個package.json到目標目錄.callback回調可以用來處理(package.json中的)添加/刪除等等操作.

init.writePackageJSON(filename, props[, callback])

Built-in prompts 內建提示

author_email

package.json里用的作者email. 將會尋找用戶的git配置提供一個默認值

author_name

package.json和版權聲明里使用的用戶全名.將會尋找用戶的git配置提供默認值

author_url

package.json中使用的作者的網站的公開url

bin

一個項目根目錄的相對路徑指向cli的腳本

bugs

項目的問題跟蹤的url.默認值會使用github的issue tracker.

description

項目描述,用在package.json以及README文件中

grunt_version

項目需要的Grunt的有效版本范圍.

homepage

項目的主頁君. 默認會使用github倉庫地址

jquery_version

如果是個jQuery的項目, 這個值用來描述需要的jQuery版本. 必須是一個有效語法的版本范圍描述符.

licenses

項目的開源許可. 多個許可用空格分開. 內建的許可有:?MIT,MPL-2.0,'GPL-2.0,和Apache-2.0.默認使用MIT`. 添加自定義 的許可可以使用 init.addLicenseFiles.

main

項目主入口,默認使用lib目錄中使用項目名稱的文件.

name

項目的名稱. 會大量的在項目模版中使用.默認使用當前工作目錄的名字.

node_version

項目需要的nodejs的版本. 必須是一個有效語法的版本范圍描述符.

npm_test

運行你項目測試的命令. 默認使用?grunt.

repository

項目的git倉庫. 默認會猜測github的url

title

一個易讀的項目名稱.默認使用真實的項目名稱.

version

項目的版本.默認使用一個有效語法版本,0.1.0.

總結

以上是生活随笔為你收集整理的Grunt 入门指南5:项目脚手架的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。