{
"name": "my-project"
, "author": "Ivan Borisov"
, "version": "1.0.0"
, "description": "My first project."
, "keywords": ["my", "project"]
, "dependencies": {
"connect": "2.9.0"
, "express": "3.4.0"
, "grunt": "~0.4.1"
, "grunt-contrib-watch": "~0.5.3"
, "grunt-contrib-clean": "~0.5.0"
, "grunt-contrib-concat": "~0.3.0"
, "grunt-contrib-requirejs": "~0.4.1"
, "grunt-contrib-less": "~0.8.1"
, "grunt-contrib-jshint": "~0.7.0"
, "grunt-contrib-uglify": "~0.2.5"
, "grunt-contrib-yuidoc": "~0.5.0"
}
, "scripts": {
"start": "node server.js"
}
, "repository": {
"type": "hg"
, "url": "http://127.0.0.1:8080/repository/hg/my-project"
}
, "engines": {
"node": ">=0.10.20"
}
}
Файл Gruntfile.js для запуска задач Grunt JS:
module.exports = function (grunt) {
grunt.initConfig({
// Удалить ранее созданные файлы и папки
clean: {
files: [
'build/test.min.js'
]
}
// Объединить содержимое файлов в один итоговый общий файл
, concat: {
scripts: {
src: [
'test-file1.js'
, 'test-file2.js'
]
, dest: 'test.js'
}
, styles: {
src: [
'css-file1.less'
, 'css-file2.less'
]
, dest: 'css-file.less'
}
}
// Скомпилировать итоговый LESS-файл в итоговый CSS-файл
, less: {
development: {
files: {
'main-dev.css': 'css-file.less'
}
}
, production: {
options: {
yuicompress: true
}
, files: {
'main-pro.css': 'css-file.less'
}
}
}
// Проверить код в JavaScript-файлах
, jshint: {
all: [
'test.js'
]
, options: {
devel: false
, camelcase: true
, curly: true
, eqeqeq: false
, immed: true
, indent: 4
, latedef: true
, newcap: true
, noarg: true
, quotmark: 'single'
, undef: true
, unused: true
, strict: false
, trailing: true
, eqnull: true
, laxcomma: true
, browser: true
, jquery: true
, node: true
, nonstandard: true
, worker: true
, white: false
, maxlen: 130
}
, globals: {
require: true
, define: true
, underscore: true
, '_': true
}
}
// Создать единый файл из модулей Require JS
, requirejs: {
compile: {
options: {
baseUrl: './'
, name: 'main'
, out: 'main.js'
, paths: {
jquery: 'empty:'
}
}
}
}
// Сжать код в JavaScript-файлах
, uglify: {
options: {
banner: '/*! Файл создан: <%= grunt.template.today("yyyy-mm-dd") %> */\n'
}
, build: {
src: 'test.js'
, dest: 'build/test.min.js'
}
}
// Создать папку с документацией кода для JavaScript-файлов
, yuidoc: {
compile: {
options: {
paths: [
'./'
]
, outdir: 'doc'
}
}
}
// Начать остлеживание изменений кода файлов
, watch: {
options: {
livereload: true // Разрешить живую перезагрузку страницы
// Для живой перезагрузки в HTML-файл надо добавить строку
// <script src="http://localhost:35729/livereload.js" type="text/javascript"></script>
}
, scripts: {
files: ['test-file1.js']
, tasks: ['clean', 'concat', 'jshint']
}
, styles: {
files: ['css-file1.less']
, tasks: ['less']
}
}
});
grunt.loadNpmTasks('grunt-contrib-clean');
grunt.loadNpmTasks('grunt-contrib-concat');
grunt.loadNpmTasks('grunt-contrib-less');
grunt.loadNpmTasks('grunt-contrib-jshint');
grunt.loadNpmTasks('grunt-contrib-requirejs');
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-contrib-yuidoc');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.registerTask('default', [
'clean'
, 'concat'
, 'less'
, 'jshint'
, 'requirejs'
, 'uglify'
, 'yuidoc'
, 'watch'
]);
};
Файл rungrunt.js для запуска Grunt JS из консоли:
require('grunt').cli();
Комментариев нет:
Отправить комментарий