3

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

4

2 回答 2

8

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

concat: {
  options: {
    separator: ';',
  },
  dist: {
    src: [
      'bower/jquery/jquery.js',
      'assets/js/script.js'
    ],
    dest: 'public/assets/app.js',
  },
},
于 2013-12-23T16:03:04.133 回答
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',
      },
于 2015-10-14T09:04:34.597 回答