Простите, я новичок в Grunt и обычно не пишу код PHP. Это новый проект для меня. Я пытаюсь использовать Grunt, потому что это круто, с некоторыми html-файлами, в которых есть минимальный php.
Первоначально я установил регулярное grunt, а не php grunt. Теперь я понимаю, что, возможно, мне следовало установить grunt-php. Тем не менее, я попытался удалить gruntfile.js, установить grunt-php, а затем добавить новые конфигурации в новый gruntfile.js, но терминал продолжает выдавать ошибку «по умолчанию» не найден, даже если задача по умолчанию определенно существует. Я знаю, что делаю что-то не так, но я не знаю что.
Легче ли просто добавить php в мой оригинальный файл grunt? Я не знаю, как бы я это сделал, хотя.
Вот оригинальный файл:
module.exports = function(grunt){
require("matchdep").filterDev("grunt-*").forEach(grunt.loadNpmTasks);
grunt.initConfig({
htmlhint: {
build: {
options: {
'tag-pair': true,
'tagname-lowercase': true,
'attr-lowercase': true,
'attr-value-double-quotes': true,
'doctype-first': true,
'spec-char-escape': true,
'id-unique': true,
'head-script-disabled': true,
'style-disabled': true
},
src: ['index.php']
}
},
watch: {
html: {
files: ['index.php'],
tasks: ['htmlhint']
},
js: {
files: ['assets/js/**/*.js'],
tasks: ['uglify']
},
css: {
files: ['assets/sass/**/*.scss'],
tasks: ['buildcss']
}
},
sass: {
build: {
files: {
'build/css/master.css': 'assets/sass/master.scss'
}
}
},
browserSync: {
/*bsFiles: {
src : ['assets/css/*.css', '*.html'],
},*/
files: ['*.html', 'assets/templates/*.html'],
options: {
server: {
baseDir: "./"}
}
},
cssc: {
build: {
options: {
consolidateViaDeclarations: true,
consolidateViaSelectors: true,
consolidateMediaQueries: true
},
files: {
'build/css/master.css': 'build/css/master.css'
}
}
},
cssmin: {
build: {
src: 'build/css/master.css',
dest: 'build/css/master.css'
}
},
uglify: {
build: {
files: {
'build/js/base.min.js': ['bower_components/jquery/dis/jquery.min.js', 'bower_components/angular/angular.min.js', 'assets/js/**/*.js']
}
}
},
pkg: grunt.file.readJSON('package.json'),
phpunit:{
test:{
dir:'',
options:{
bin: 'bin/phpunit',
configuration:'app/phpunit.xml'
}
}
},
'sf2-cache-clear':{
options: {},
dev: {},
prod: {}
}
});
grunt.registerTask('buildcss', ['sass', 'cssc', 'cssmin']);
grunt.loadNpmTasks('grunt-contrib-sass');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-browser-sync');
grunt.loadNpmTasks('grunt-phpunit');
grunt.loadNpmTasks('grunt-symfony2');
grunt.registerTask('default', ['uglify', 'buildcss', 'browserSync','watch']);
grunt.registerTask('test', ['phpunit:test']);
};
Вот код grunt, который я попытался добавить для grunt-php:
require('load-grunt-tasks')(grunt);
grunt.initConfig({
php: {
dist: {
options: {
hostname: '127.0.0.1',
port: 9000,
base: 'dist', // Project root
keepalive: false,
open: false
}
}
},
browserSync: {
dist: {
bsFiles: {
src: [
// Files you want to watch for changes
]
},
options: {
proxy: '<%= php.dist.options.hostname %>:<%=php.dist.options.port %>',
watchTask: true,
notify: true,
open: true,
logLevel: 'silent',
ghostMode: {
clicks: true,
scroll: true,
links: true,
forms: true
}
}
}
},
watch: {
// Your watch tasks
}
});
grunt.registerTask('serve', [
'php:dist', // Start PHP Server
'browserSync:dist', // Using the php instance as a proxy
'watch' // Any other watch tasks you want to run
]);
grunt.registerTask('default', ['php']);
Будет проще добавить grunt-php в ваш существующий Gruntfile.
Сначала установите его в свой проект:
npm install grunt-php --save-dev
Затем добавьте конфигурацию задачи в ваш Gruntfile (например, между pkg и php-unit):
php: {
dist: {
options: {
base: 'build'
}
}
},
И, наконец, определите задачу для запуска сервера и по умолчанию build + serve:
grunt.registerTask('serve', [
'php:dist',
'watch'
]);
grunt.registerTask('default', ['uglify', 'buildcss', 'serve', 'watch']);
Других решений пока нет …