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

标签 javascript node.js gruntjs grunt-init

在 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 时,我无法读取未定义的属性“名称”。我已经在 package.json 文件中验证了该文件和 Node “名称”的存在。

鉴于我是 Node 的新手,我不确定在调用 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 位于同一目录中,并且它具有读取权限。

关于javascript - Gruntfile.js 任务无法读取包值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27708337/

相关文章:

javascript - 为什么总是重画整个 Canvas ?

node.js - 添加新类别时,Mongoose 架构会抛出错误

javascript - grunt-contrib-connect 和文件上传

Javascript 调用类函数

javascript - iframe 不会在桌面上的页面上居中

javascript - 诸如socket通信之类的东西需要utf-8编码吗?

Javascript, Node : Call Asychronous Methods in a Loop & Return Result

node.js - 如何从与根项目不同的文件夹运行 grunt

angularjs - karma 报应- Jasmine : Show line number when test failed

javascript - removeEventListener 不会删除 keydown 上的事件