Come accedere alla proprietà di configurazione Grunt site
per leggere il file project.json
nel percorso specificato dal valore della proprietà config?Accesso ai dati di configurazione Grunt all'interno di initConfig()
grunt.registerTask('build', function(target) {
grunt.config('site', target);
grunt.task.run('foo:dist', 'bar:dist');
});
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
site: grunt.file.readJSON('./sites/' + grunt.config('site') + '/project.json')
});
grugnito-cli:
grunt build:sitename
>> Error: Unable to read "./sites/undefined/project.json"
Utilizzando un example dalla documentazione, ho anche provato questo:
grunt.registerTask('global', 'site', function(prop, value) {
global[prop] = val;
});
grunt.registerTask('build', ['foo:dist', 'bar:dist']);
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
site: grunt.file.readJSON('./sites/' + global.site + '/project.json')
});
grugnito-cli:
grunt global:site:sitename
>> Error: Unable to read "./sites/undefined/project.json"
Aggiornamento:
Utilizzando la risposta @FelixKling come guida, ho fatto qualche progresso:
grunt.registerTask('build', function(target) {
grunt.config.set('target', target);
grunt.config.set('site', grunt.file.readJSON('./sites/' + grunt.config.get('target') + '/project.json'));
grunt.task.run('watch');
});
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
site: grunt.config.get('site'),
watch: {
sass: {
files: ['<%= site.dev %>/scss/*.scss'],
tasks: ['sass:dist']
}
},
sass: {
dist: {
files: {
'<%= site.dist %>/style.css': '<%= site.dev %>/scss/style.scss'
}
}
},
});
Ora io sono in grado di leggere nella project.json
file con successo, e (in qualche modo) è anche in grado di riconoscere quando vengono apportate modifiche ai file guardati. Ma per qualche ragione quando si esegue l'attività sass:dist
, ottengo questo errore: Warning: An error occurred while processing a template (Cannot read property 'dev' of undefined).
Io non sono chiare su come il compito watch
è in grado di ottenere il valore corretto per site
, ma ancora più importante, ho bisogno di capire un modo per ottenere lo stesso valore per l'attività sass
.
Per quanto riguarda l'aggiornamento, al momento 'grunt.file.readJSON ('./ siti /' + globali. site + '/project.json') 'corre,' global.site' non esiste ancora poiché il task 'global' non è ancora stato eseguito. Controlla di nuovo la mia risposta, ho risolto ciò che era sbagliato. –