Задача 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 и что у него есть разрешения на чтение.

Другие вопросы по тегам