Задача Gruntfile.js не может прочитать значения пакета?
В функции initConfig Gruntfile.js у меня есть следующее:
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
banner: '/*! <%= pkg.title || pkg.name %> - v<%= pkg.version %> - ' +
'<%= grunt.template.today("yyyy-mm-dd") %>\n' +
'* Copyright (c) <%= grunt.template.today("yyyy") %> <%= pkg.author.name %>;',
concat: {
options: {
banner: '<%= banner %>',
stripBanners: true
},
dist: {
src: ['src/<%= pkg.name %>.js'],
dest: 'dist/<%= pkg.name %>.js'
}
},
Я создаю переменную pkg, а затем пытаюсь извлечь имя из объекта в concat.dist, потому что это происходит из нового шаблона grunt-init. Я получаю Невозможно прочитать свойство 'имя' из неопределенного при запуске concat: dist. Я проверил существование файла и имя узла в файле package.json.
Учитывая, что я новичок в узле, я не уверен, сохраняются ли эти замыкания при вызове grunt-задач, и если они это делают, я использую неправильное соглашение? Это вообще возможно?
1 ответ
Я думаю, что он не может прочитать ваши package.json
файл по какой-то причине. Или потому, что он не существует (возможно, назван по-другому?) Или не имеет прав на чтение. Вы можете создать простой тест, чтобы увидеть, можете ли вы получить доступ к файлу из Grunt:
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
logvar: {
data: '<%= pkg.name %>'
}
});
grunt.registerTask('logvar', function() {
grunt.log.writeln(grunt.config.get('logvar').data);
});
Теперь просто беги grunt logvar
из командной строки. Если вы по-прежнему получаете сообщение об ошибке, мы удалили все остальное, а это означает, что вы package.json
файл недоступен Я бы порекомендовал проверить, что он находится в том же каталоге, что и Gruntfile.js
и что у него есть разрешения на чтение.