Grunt入門ガイド5:プロジェクト足場
17467 ワード
Project Scaffoldingプロジェクト足場
grunt-init
Grunt-initはプロジェクトを生成するための足場ツールである.現在の環境およびコマンドの問答結果に基づいて、完全なプロジェクトディレクトリ構造が作成されます.実際に生成するプロジェクトファイルと内容は、選択したテンプレートおよび問答結果に依存する.
インストール
grunt-initの使用を開始する前に、grunt-initをグローバルにインストールする必要があります.npm install -g grunt-init
インストール後、任意のディレクトリでgrunt-init
コマンドを使用することができる.
Usage使用
npm install -g grunt-init
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 [email protected]: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
を直接使用することができます.コピーファイル
1つのテンプレートが
init.fileToCopy
およびinit.copyAndProcess
の方法を用いる限り、初期化テンプレートの実行時に、root/
のサブディレクトリにあるファイルはいずれも現在のディレクトリにコピーされる.コピーされたすべてのファイルはテンプレート処理され、
{% %}
のプロパティが設定場合を除き、props
のデータが収集され、再処理されることに注意する.jquery templateの例を参照してください.Renaming or excluding template fileテンプレートファイルの名前変更または除外
noProgress
は、rename.json
~sourcepath
の名前変更マッピングを記述する.destpath
は、sourcepath
のディレクトリに対するコピーが必要なファイルパスである必要があるが、root/
は、ターゲットパスを記述するためにdestpath
テンプレートを含むことができる.{% %}
がdestpath
に指定すると、そのファイルはコピーされず、同様にfalse
もglobモードをサポートする.Specifying default prompt answersデフォルトのプロンプトの答えを指定
初期化プロンプトのたびに、ハードコーディングのデフォルト値が表示されるか、現在の環境を表示してデフォルト値を決定しようとします.特定のプロンプトのデフォルト値を上書きする場合は、
srcpath
(windowsでは~/.grunt-init/defaults.json
)のファイルを変更できます.例えば、私の
%USERPROFILE%\.grunt-init\defaults.json
はこのように見えます.デフォルトの名前より少し異なる名前を使い、私のemailアドレスを排除し、作者urlを自動的に指定したいからです.{
"author_name": "\"Cowboy\" Ben Alman",
"author_email": "none",
"author_url": "http://benalman.com/"
}
Defining an init template定義initテンプレート
exports.description
テンプレートの概要説明は、利用可能なテンプレートの名前の後に、ユーザが
defaults.json
またはgrunt init
を実行するときに表示される.exports.description = descriptionString;
exports.notes
このオプションを指定すると、このオプションの拡張説明には、任意のプロンプトの後に表示されます.これを使用して、ユーザーに命名慣例を説明することができます.どのオプションが選択可能なのか、待たなければならないのかを説明することができます.
exports.warnOn
このオプション(ただし、推奨設定)のワイルドカードモードまたはモード配列のマッチングが成功すると、Gruntは終了し、
grunt-init
のオプションで操作を継続できることをユーザに提示する.これは、テンプレートの初期化時に既存の同名ファイルを上書きする場合に有用である.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
--force
の属性はこの関数の外で定義され、実際の初期化コードはすべて中に入る.3つのパラメータはこの関数に伝わり、exports
パラメータはgruntオブジェクトの参照であり、すべてのgruntのメソッドとライブラリを含む.grunt
パラメータはinitテンプレートの方法と属性を含むオブジェクトである.init
のパラメータは、初期化テンプレートが完了する後に呼び出す必要がある関数である.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
done
からのユーザ指定のデフォルト初期値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
ディレクトリを初期化し、使用可能なテンプレートを検索します.
defaults.json
はテンプレートのアドレスである.同様にtemplate
とgrunt-initの初期化タスクコアを含む.△この段落は翻訳できません.init.initSearchDirs([filename])
init.process
ヒントを開始するプロセスを開始します.
init.process(options, prompts, done)
init.process({}, [
// Prompt for these values
init.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
パッケージを保存します.jsonはターゲットディレクトリに.callbackコールバックは、追加/削除などの操作を処理するために使用することができる.
init.writePackageJSON(filename, props[, callback])
Built-in prompts組み込みのヒント
author_email
~/.grunt-init/
で使われている作者email.ユーザーのgit構成を探してデフォルト値を指定しますauthor_name
package.json
と著作権声明で使用するユーザーのフルネーム.ユーザーのgit構成のデフォルト値が見つかりますauthor_url
package.json
で使用されている作者のサイトの公開urlbin
プロジェクトルートディレクトリの相対パスがcliを指すスクリプト
bugs
プロジェクトの問題追跡url.デフォルトではgithubのissue trackerが使用されます.
description
package.json
およびREADMEファイルで使用されるプロジェクトの説明grunt_version
プロジェクトに必要なGruntの有効バージョン範囲.
homepage
プロジェクトのホームページデフォルトではgithubウェアハウスアドレスが使用されます
jquery_version
jQueryのアイテムの場合、この値は必要なjQueryバージョンを記述するために使用されます.有効な構文のバージョン範囲記述子である必要があります.
licenses
プロジェクトのオープンソースライセンス複数のライセンスをスペースで区切る.内装の許可は
package.json
,MIT
,'GPL-2.0 MPL-2.0
Apache-2.0 ,
MIT`.カスタムライセンスを追加するにはinitを使用します.addLicenseFiles. main
プロジェクトのメインエントリは、デフォルトでは
.
ディレクトリで使用するプロジェクト名のファイルを使用します.name
プロジェクトの名前プロジェクトテンプレートで大量に使用されます.デフォルトでは、現在の作業ディレクトリの名前が使用されます.
node_version
プロジェクトに必要なnodejsのバージョン.有効な構文のバージョン範囲記述子である必要があります.
npm_test
プロジェクトテストのコマンドを実行します.デフォルトでは
lib
が使用する.repository
プロジェクトのgit倉庫デフォルトではgithubのurlが推測されます
title
読みやすい項目名.デフォルトでは、実際のプロジェクト名が使用されます.
version
プロジェクトのバージョンデフォルトでは、有効な構文バージョン
grunt
が使用されます.