【问题标题】:Grunt outputs an empty .js-file after concattingGrunt 在连接后输出一个空的 .js 文件
【发布时间】:2013-12-20 19:00:08
【问题描述】:

Gruntfile 的输出是public/assets/app.js 中的一个空文件。 Sass 部分工作正常,但 JS 部分不能。

//Gruntfile 
module.exports = function(grunt) {

  //Initializing the configuration object
    grunt.initConfig({

    // Task configuration
    sass: {
        dist: {
             options: {
              style: 'compressed'
            },
            files: {
              './public/assets/app.css': './app/assets/scss/style.scss'
            },
            noCache: true
        }
    },
    concat: {
      options: {
        separator: ';',
      },
      dist: {
        src: [
          './app/bower/jquery/jquery.js',
          './app/assets/js/script.js'
        ],
        dest: './public/assets/app.js',
      },
    },
    uglify: {
      options: {
        mangle: false 
      },
      dist: {
        files: {
          './public/assets/app.js': './public/assets/app.js',
        }
      },
    },
    jshint: {
      all: ['Gruntfile.js', './public/assets/app.js']
    },
    watch: {
        js: {
          files: [
            './app/assets/bower/*.js',
            './app/assets/js/*.js'
            ],   
          tasks: ['jshint', 'concat', 'uglify'],  
          options: {
            livereload: false 
          }
        },
        sass: {
          files: ['./app/assets/scss/*.scss'],
          tasks: ['sass'], 
          options: {
            livereload: false  
          }
        }
      }
    });

  // Plugin loading
  grunt.loadNpmTasks('grunt-contrib-concat');
  grunt.loadNpmTasks('grunt-contrib-watch');
  grunt.loadNpmTasks('grunt-contrib-sass');
  grunt.loadNpmTasks('grunt-contrib-uglify');
  grunt.loadNpmTasks('grunt-contrib-jshint');

  // Task definition
  grunt.registerTask('default', ['sass', 'jshint', 'concat', 'uglify', 'watch']);

};

但我无法找出问题所在。甚至 JSHint 也没有显示错误。 结构如下:https://www.dropbox.com/s/y0t2tu0asotz0ex/Screenshot%202013-12-20%2020.49.54.png

【问题讨论】:

  • 通常一个空的 concat 文件是因为 concat 任务没有找到源文件。如果没有看到你的目录结构,就很难说你的 Gruntfile 是否正确。
  • 您是否能够单独运行grunt concat 并取得任何成功?还是同样的结果?我也会尝试只使用'app/bower/jquery/jquery.js'(前面没有“./”)-我知道这不重要,但是...
  • 不。一样。而且 Grunt concat 可以正常工作:Running "concat:dist" (concat) task File "./public/assets/app.js" created. Done, without errors.
  • 等等,grunt concat 是否可以工作并生成包含所有内容的文件?如果是这样,我猜这是你的uglify 任务。在这种情况下,请尝试将 uglify 任务的输出名称设为其他名称(例如 app.min.js)。

标签: gruntjs grunt-contrib-concat grunt-contrib-uglify


【解决方案1】:

再看看您的Gruntfile 和目录结构,我认为您指定的文件夹不正确,您将源指定为./app/...,但如果您的 Gruntfile 在该目录中 (app),那么您必须从那里运行你的 grunt 任务,这意味着它会寻找 app/app/... (因为它是相对于当前目录的)。试试这个:

concat: {
  options: {
    separator: ';',
  },
  dist: {
    src: [
      'bower/jquery/jquery.js',
      'assets/js/script.js'
    ],
    dest: 'public/assets/app.js',
  },
},

【讨论】:

    【解决方案2】:

    我的解决方案是设置正确的文件路径:Scripts/libs/Timer.js - 正确,/Scripts/libs/Timer.js - 空文件 Scripts 是我项目中的一个文件夹。 Project/Scripts/libs/Timer.js - 完整路径。 当我设置此路径时: Scripts/libs/Timer.js - 文件不为空,/Scripts/libs/Timer.js - 文件为空。

    concat: {
                options:{
                    // define a string to put between each file in the concatenated output
                    separator: '\n;'
                },
                own_scripts: {
                    //project-files
                    src: [
                        "Scripts/application/app.js",
                        "Scripts/application/Controllers/*.js",
                        "Scripts/application/Directives/*.js",
                        "Scripts/application/Filters/*.js",
                        "Scripts/application/Services/*.js"
                    ],
                    dest: 'dist/scripts-concat.js'
    }
    

    也许你应该这样做:

        dist: {
            src: [
              'app/bower/jquery/jquery.js',
              'app/assets/js/script.js'
            ],
            dest: 'public/assets/app.js',
          },
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-09
      • 1970-01-01
      • 2018-05-28
      相关资源
      最近更新 更多