Ana içeriğe geç

Grunt-init Aracı

grunt-init

Grunt-init, proje oluşturmayı otomatikleştirmek için kullanılan bir iskelet aracıdır. Mevcut ortam ve sorulara verilen yanıtlara bağlı olarak, tam bir dizin yapısı oluşturur. Oluşturulan dosya ve içerikler, seçilen şablona ve sorulan sorulara verilen yanıtlara bağlı olarak değişiklik gösterir.

Not: Bu bağımsız yardımcı program, Grunt'a "init" görevi olarak entegre edilmişti. Bu değişiklik hakkında daha fazla bilgi için Grunt 0.3'ten 0.4'e Yükseltme kılavuzuna bakın.

Kurulum

Grunt-init'i kullanmak için, onu küresel olarak yüklemek isteyeceksiniz.

npm install -g grunt-init

Bu, grunt-init komutunu sistem yolunuza ekleyecek ve her yerden çalıştırılmasını sağlayacaktır.

tehlike

Bunu yapmak için sudo kullanmanız veya komut shell'inizi Yönetici olarak çalıştırmanız gerekebilir.

Kullanım

  • Program hakkında yardım almak ve mevcut şablonların listesini görmek için grunt-init --help komutunu kullanın.
  • Mevcut bir şablona dayanan bir proje oluşturmak için grunt-init TEMPLATE komutunu kullanın.
  • Arbitre konumda bir şablona dayanan bir proje oluşturmak için grunt-init /path/to/TEMPLATE komutunu kullanın.

Çoğu şablon mevcut dizin içinde dosyalarını oluşturduğundan, mevcut dosyaları üzerine yazmak istemiyorsanız önce yeni bir dizine geçmeyi unutmayın.

Şablonları Yükleme

Şablonlar ~/.grunt-init/ dizininize (%USERPROFILE%\.grunt-init\ Windows'ta) yüklendikten sonra, grunt-init aracılığıyla kullanılabilir olacaktır. Bu dizine bir şablon klonlamak için git kullanmanız önerilir. Örneğin, grunt-init-jquery şablonunu şu şekilde yükleyebilirsiniz:

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

Not: Şablonu yerel olarak "foobarbaz" olarak kullanılabilir hale getirmek isterseniz, klonlama sırasında ~/.grunt-init/foobarbaz belirtmeniz gerekir. Grunt-init, ~/.grunt-init/ dizinindeki gerçek şablon dizin adını kullanacaktır.

Birkaç grunt-init şablonu resmi olarak sürdürülmektedir:

Özel Şablonlar

Özel şablonlar oluşturabilir ve kullanabilirsiniz. Şablonunuz, yukarıda belirtilen şablonlar ile aynı yapıyı izlemelidir.

my-template adında bir örnek şablon, bu genel dosya yapısını izlemelidir:

  • my-template/template.js - ana şablon dosyası.
  • my-template/rename.json - şablona özgü yeniden adlandırma kuralları, işlenir.
  • my-template/root/ - hedef konuma kopyalanacak dosyalar.

Bu dosyaların /path/to/my-template yolunda mevcut olduğunu varsayarsak, grunt-init /path/to/my-template komutu şablonu işlemek için kullanılacaktır. Aynı dizinde birden fazla benzersiz adlı şablon mevcut olabilir.

ipucu

Ayrıca, bu özel şablonu ~/.grunt-init/ dizininize (%USERPROFILE%\.grunt-init\ Windows'ta) koyarsanız, sadece grunt-init my-template ile otomatik olarak kullanılabilir hale gelecektir.

Dosyaları Kopyalama

Bir şablon init.filesToCopy ve init.copyAndProcess yöntemlerini kullanıyorsa, root/ alt dizinindeki herhangi bir dosya, init şablonu çalıştırıldığında mevcut dizine kopyalanacaktır.

not

Not: Kopyalanan tüm dosyalar şablon olarak işlenecek ve {% %} şablonu, toplanan props veri nesnesine karşı işlenecektir, noProcess seçeneği ayarlanmadığı sürece. Örneğin bir jquery şablonuna bakabilirsiniz.

Şablon Dosyalarının Yeniden Adlandırılması veya Hariç Tutulması

rename.json, sourcepath ile destpath yeniden adlandırma eşlemelerini tanımlar. sourcepath, kopyalanacak dosyanın root/ klasörüne göre yolu olmalı, ancak destpath değeri {% %} şablonlarını içerebilir ve varış yolunu tanımlayabilir.

false olarak belirtilen bir destpath varsa dosya kopyalanmayacaktır. Ayrıca, srcpath için glob desenleri de desteklenir.

Varsayılan İstem Yanıtlarını Belirleme

Her init isteminin ya önceden tanımlı bir varsayılan değeri vardır ya da mevcut ortamı inceleyerek varsayılan değeri belirlemeye çalışır. Belirli bir istemin varsayılan değerini geçersiz kılmak isterseniz, bunu isteğe bağlı OS X veya Linux ~/.grunt-init/defaults.json veya Windows %USERPROFILE%\.grunt-init\defaults.json dosyasında yapabilirsiniz.

Örneğin, benim defaults.json dosyam şu şekilde görünüyor, çünkü varsayılan isimden biraz farklı bir isim kullanmak istiyorum, e-posta adresimi hariç tutmak istiyorum ve otomatik olarak bir yazar URL'si belirtmek istiyorum.

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

Not: Tüm yerleşik istemler belgelenene kadar, adlarını ve varsayılan değerlerini kaynak kodda bulabilirsiniz.

Bir Init Şablonu Tanımlama

exports.description

Bu kısa şablon tanımı, kullanıcı grunt init veya grunt-init komutunu çalıştırdığında şablon adıyla birlikte gösterilecektir.

exports.description = descriptionString;

exports.notes

Eğer belirtilirse, bu isteğe bağlı genişletilmiş tanım, herhangi bir istemden önce gösterilecektir. Bu, kullanıcıya isimlendirme kurallarını, hangi istemlerin zorunlu veya isteğe bağlı olabileceğini açıklamak için biraz yardımcı olmanın iyi bir yeridir.

exports.notes = notesString;

exports.warnOn

Eğer bu isteğe bağlı (ama önerilen) joker desen veya joker desenler dizisi eşleşirse, Grunt, kullanıcının --force ile geçersiz kılabileceği bir uyarı ile duracaktır. Bu, init şablonunun mevcut dosyaları üzerine yazma olasılığının olduğu durumlarda oldukça faydalıdır.

exports.warnOn = wildcardPattern;

En yaygın değer '*' olacak, herhangi bir dosya veya dizini eşleştirecektir, kullanılan minimatch joker desen sözdizimi çok fazla esneklik sağlar. Örneğin:

exports.warnOn = 'Gruntfile.js';    // Gruntfile.js dosyası için uyarı.
exports.warnOn = '*.js'; // Herhangi bir .js dosyası için uyarı.
exports.warnOn = '*'; // Herhangi bir nokta dosyası veya nokta dizini için uyarı.
exports.warnOn = '.*'; // Herhangi bir noktalar dosyası veya nokta dizini için uyarı.
exports.warnOn = '{.*,*}'; // Herhangi bir dosya veya dizin (nokta veya nokta olmayan) için uyarı.
exports.warnOn = '!*/**'; // Herhangi bir dosya için uyarı (dizini göz ardı ederek).
exports.warnOn = '*.{png,gif,jpg}'; // Herhangi bir resim dosyası için uyarı.

// Son örneği yazmanın başka bir yolu.
exports.warnOn = ['*.png', '*.gif', '*.jpg'];

exports.template

exports özellikleri bu işlevin dışında tanımlanmış olmasına rağmen, tüm gerçek init kodu burada belirtilmiştir. Bu işleve üç argüman geçilir. grunt argümanı, tüm grunt yöntemleri ve kütüphanelerini içeren bir grunt referansıdır. init argümanı, bu init şablonuna özgü yöntemler ve özellikler içeren bir nesnedir. done argümanı, init şablonu çalışmayı tamamladığında çağrılması gereken bir işlevdir.

exports.template = function(grunt, init, done) {
// "Bir init şablonunun içindeki" bölümüne bakın.
};

Bir init şablonunun içinde

init.addLicenseFiles

Dosyalar nesnesine uygun şekilde adlandırılmış lisans dosyaları ekleyin.

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

init.availableLicenses

Mevcut lisanslar dizisini döndür.

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

init.copy

Bir mutlak veya ilişkili kaynak yolu verildiğinde, ve isteğe bağlı bir ilişkili varış yolu belirttiğinizde, bir dosyayı kopyalayın, isteğe bağlı olarak belirtilen geri çağırma ile işleyin.

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

init.copyAndProcess

Verilen nesnedeki tüm dosyalar üzerinde yineleme yapın, kaynak dosyayı varış noktasına kopyalayın, içeriği işleyin.

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

init.defaults

Kullanıcı tarafından belirtilen varsayılan init değerleri defaults.json dosyasından alınır.

init.defaults

init.destpath

Mutlak varış dosyası yolu.

init.destpath()

init.expand

Aynı grunt.file.expand gibi çalışır.

Verilen joker desen(ler) ile eşleşen tüm dosya veya dizin yollarının benzersiz bir dizisini döndürür. Bu yöntem, ya virgülle ayrılmış joker desenleri ya da bir joker desenleri dizisi kabul eder. ! ile başlayan desenler, döndürülen diziden hariç tutulur. Desenler sırasıyla işlenir, bu nedenle dahil etme ve hariç tutma sırası önemlidir.

init.expand([options, ] patterns)

init.filesToCopy

Yeniden adlandırma.json (varsa) kurallarına göre yeniden adlandırılmış (veya kaldırılmış) mutlak kaynak yolu ve görece varış yolu ile kopyalanacak dosyaları içeren bir nesne döndürür.

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

Tek bir görev dosyası yolunu alın.

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

init.getTemplates

Tüm mevcut şablonların bir nesnesini döndürür.

init.getTemplates()

init.initSearchDirs

Init şablonları için arama dizinlerini başlat. template, bir şablonun konumunu belirtir. Ayrıca ~/.grunt-init/ ve grunt-init içindeki temel init görevlerini de içerecektir.

init.initSearchDirs([filename])

init.process

Girdi isteme sürecini başlatın.

init.process(options, prompts, done)
init.process({}, [
// Bu değerler için istem yap
init.prompt('name'),
init.prompt('description'),
init.prompt('version')
], function(err, props) {
// Tüm işlemler tamamlandı, özelliklerle bir şeyler yapın
});

init.prompt

Bir kullanıcıdan bir değer isteme.

init.prompt(name[, default])

init.prompts

Tüm istemlerin bir nesnesi.

var prompts = init.prompts;

init.readDefaults

Görev dosyalarından (varsa) JSON varsayılanlarını okuyun, bunları tek bir veri nesnesine birleştirin.

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

init.renames

Şablon için yeniden adlandırma kuralları.

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

init.searchDirs

Şablonlar için arama yapılacak dizinlerin bir dizisi.

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

init.srcpath

İsim dosyası için init şablon yollarında ara ve mutlak yolu döndür.

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

init.userDir

Kullanıcının şablon dizinine giden mutlak yolu döndürür.

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

init.writePackageJSON

Hedef dizinde bir package.json dosyası kaydedin. Geri çağırma, özellikleri eklemek/çıkarmak vb. için kullanılabilir.

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

Yerleşik İstemler

author_email

package.json dosyasında kullanılacak yazarın e-posta adresi. Kullanıcının git konfigürasyonundan varsayılan bir değer bulmaya çalışacaktır.

author_name

package.json ve telif hakkı bildirimlerinde kullanılacak yazarın tam adı. Kullanıcının git konfigürasyonundan varsayılan bir değer bulmaya çalışacaktır.

author_url

package.json dosyasında kullanılacak yazarın web sitesi için herkese açık bir URL.

bin

Bir CLI scripti için proje kökünden ilişkili bir yol.

bugs

Projenin sorun izleyicisi için herkese açık bir URL. Projenin bir GitHub deposu varsa, varsayılan olarak GitHub sorun izleyicisine geçecektir.

description

Projenin tanımı. package.json ve README dosyalarında kullanılır.

grunt_version

Projenin ihtiyaç duyduğu Grunt için geçerli bir semantik sürüm aralığı tanımlayıcısı.

homepage

Projenin ana sayfası için herkese açık bir URL. GitHub reposu varsa varsayılan olarak GitHub URL'sine geçecektir.

jquery_version

Bir jQuery projesi ise, projenin ihtiyaç duyduğu jQuery sürümü. Geçerli bir semantik sürüm aralığı tanımlayıcısı olmalıdır.

licenses

Proje için lisans(lar). Birden fazla lisans boşluklarla ayrılır. Yerleşik lisanslar şunlardır: MIT, MPL-2.0, GPL-2.0 ve Apache-2.0. Varsayılan olarak MIT olarak ayarlanır. init.addLicenseFiles ile özel lisanslar ekleyebilirsiniz.

main

Projenin ana giriş noktası. Varsayılan olarak lib klasöründeki proje adı olarak ayarlanır.

name

Projenin adı. Proje şablonunun dört bir yanında yoğun bir şekilde kullanılacaktır. Varsayılan olarak mevcut çalışma dizinidir.

node_version

Projenin gerektirdiği Node.js sürümü. Geçerli bir semantik sürüm aralığı tanımlayıcısı olmalıdır.

npm_test

Projenizde testleri çalıştırmak için komut. Varsayılan olarak grunt olarak ayarlanır.

repository

Projenin git deposu. Varsayılan olarak bir GitHub URL'sini tahmin eder.

title

İnsan tarafından okunabilir bir proje adı. Varsayılan olarak gerçekteki proje adının daha insan tarafından okunabilir bir biçimde değiştirilmiş halidir.

version

Projenin sürümü. Varsayılan olarak ilk geçerli semantik sürüm, 0.1.0 olarak ayarlanır.