繁体   English   中英

Gruntfile.js任务无法读取包值?

[英]Gruntfile.js task can't read package values?

在Gruntfile.js的initConfig函数中,我有以下内容:

  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时无法读取未定义的属性'name'。 我已经验证了文件的存在以及package.json“文件中的节点”name“。

鉴于我是节点的新手,我不确定在调用grunt任务时这些闭包是否仍然存在,如果他们这样做,我是否使用了错误的约定? 这甚至可能吗?

我的猜测是,由于某种原因它无法读取你的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在同一目录中,并且它具有读取权限。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM