在连接后,Grunt输出一个空的.js文件

时间:2013-12-20 19:00:08

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

Gruntfile的输出是public/assets/app.js中的空文件。 Sass-part工作正常,但JS-part没有。

//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

2 个答案:

答案 0 :(得分:7)

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

app/app/...

答案 1 :(得分:0)

我的解决方案是设置正确的文件路径:Scripts/libs/Timer.js - 正确,/Scripts/libs/Timer.js - 空文件 脚本是我项目的一个文件夹。 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',
      },