2013-08-22 49 views
12

Đối với một số lý do, khi thực hiện một grunt build trên VM của tôi, nó chỉ đơn giản là chết đi theo cách này:Grunt xây dựng - Chạy "đồng thời: dist" (đồng thời) Nhiệm vụ giết

... 
Running "concurrent:dist" (concurrent) task 
Killed 

Tôi không chắc chắn là những gì xảy ra. Dường như để có thể xây dựng trên máy tính địa phương của tôi, không chắc chắn lý do tại sao nó không hoạt động trên máy ảo của tôi.

Bất kỳ ý tưởng nào? Cảm ơn!


CẬP NHẬT

grunt build --verbose

Running "concurrent:dist" (concurrent) task 
Verifying property concurrent.dist exists in config...OK 
Files: [no src] -> dist 
Killed 

Đây là Gruntfile.js.

// Generated on 2013-08-13 using generator-angular 0.3.1 
'use strict'; 
var LIVERELOAD_PORT = 35729; 
var lrSnippet = require('connect-livereload')({ port: LIVERELOAD_PORT }); 
var mountFolder = function (connect, dir) { 
    return connect.static(require('path').resolve(dir)); 
}; 

// # Globbing 
// for performance reasons we're only matching one level down: 
// 'test/spec/{,*/}*.js' 
// use this if you want to recursively match all subfolders: 
// 'test/spec/**/*.js' 

module.exports = function (grunt) { 
    // load all grunt tasks 
    require('matchdep').filterDev('grunt-*').forEach(grunt.loadNpmTasks); 

    // configurable paths 
    var yeomanConfig = { 
    app: 'app', 
    dist: 'dist' 
    }; 

    try { 
    yeomanConfig.app = require('./bower.json').appPath || yeomanConfig.app; 
    } catch (e) {} 

    grunt.initConfig({ 
    yeoman: yeomanConfig, 
    watch: { 
     coffee: { 
     files: ['<%= yeoman.app %>/scripts/{,*/}*.coffee'], 
     tasks: ['coffee:dist'] 
     }, 
     coffeeTest: { 
     files: ['test/spec/{,*/}*.coffee'], 
     tasks: ['coffee:test'] 
     }, 
     livereload: { 
     options: { 
      livereload: LIVERELOAD_PORT 
     }, 
     files: [ 
      '<%= yeoman.app %>/{,*/}*.html', 
      '{.tmp,<%= yeoman.app %>}/styles/{,*/}*.css', 
      '{.tmp,<%= yeoman.app %>}/scripts/{,*/}*.js', 
      '<%= yeoman.app %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' 
     ] 
     } 
    }, 
    connect: { 
     options: { 
     port: 9000, 
     // Change this to '0.0.0.0' to access the server from outside. 
     hostname: 'localhost' 
     }, 
     livereload: { 
     options: { 
      middleware: function (connect) { 
      return [ 
       lrSnippet, 
       mountFolder(connect, '.tmp'), 
       mountFolder(connect, yeomanConfig.app) 
      ]; 
      } 
     } 
     }, 
     test: { 
     options: { 
      middleware: function (connect) { 
      return [ 
       mountFolder(connect, '.tmp'), 
       mountFolder(connect, 'test') 
      ]; 
      } 
     } 
     }, 
     dist: { 
     options: { 
      middleware: function (connect) { 
      return [ 
       mountFolder(connect, yeomanConfig.dist) 
      ]; 
      } 
     } 
     } 
    }, 
    open: { 
     server: { 
     url: 'http://localhost:<%= connect.options.port %>' 
     } 
    }, 
    clean: { 

     dist: { 
     files: [{ 
      dot: true, 
      src: [ 
      '.tmp', 
      '<%= yeoman.dist %>/*', 
      '!<%= yeoman.dist %>/.git*' 
      ] 
     }] 
     }, 
     server: '.tmp' 
    }, 
    jshint: { 
     options: { 
     jshintrc: '.jshintrc' 
     }, 
     all: [ 
     'Gruntfile.js', 
     '<%= yeoman.app %>/scripts/{,*/}*.js' 
     ] 
    }, 
    coffee: { 
     dist: { 
     files: [{ 
      expand: true, 
      cwd: '<%= yeoman.app %>/scripts', 
      src: '{,*/}*.coffee', 
      dest: '.tmp/scripts', 
      ext: '.js' 
     }] 
     }, 
     test: { 
     files: [{ 
      expand: true, 
      cwd: 'test/spec', 
      src: '{,*/}*.coffee', 
      dest: '.tmp/spec', 
      ext: '.js' 
     }] 
     } 
    }, 
    // not used since Uglify task does concat, 
    // but still available if needed 
    /*concat: { 
     dist: {} 
    },*/ 
    rev: { 
     dist: { 
     files: { 
      src: [ 
      '<%= yeoman.dist %>/scripts/{,*/}*.js', 
      '<%= yeoman.dist %>/styles/{,*/}*.css', 
      '<%= yeoman.dist %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', 
      '<%= yeoman.dist %>/fonts/*' 
      ] 
     } 
     } 
    }, 
    useminPrepare: { 
     html: '<%= yeoman.app %>/index.html', 
     options: { 
     dest: '<%= yeoman.dist %>' 
     } 
    }, 
    usemin: { 
     html: ['<%= yeoman.dist %>/{,*/}*.html'], 
     css: ['<%= yeoman.dist %>/styles/{,*/}*.css'], 
     options: { 
     dirs: ['<%= yeoman.dist %>'] 
     } 
    }, 
    imagemin: { 
     dist: { 
     files: [{ 
      expand: true, 
      cwd: '<%= yeoman.app %>/img', 
      src: '{,*/}*.{png,jpg,jpeg}', 
      dest: '<%= yeoman.dist %>/img' 
     }] 
     } 
    }, 
    svgmin: { 
     dist: { 
     files: [{ 
      expand: true, 
      cwd: '<%= yeoman.app %>/img', 
      src: '{,*/}*.svg', 
      dest: '<%= yeoman.dist %>/img' 
     }] 
     } 
    }, 
    cssmin: { 
    // By default, your `index.html` <!-- Usemin Block --> will take care of 
     // minification. This option is pre-configured if you do not wish to use 
     // Usemin blocks. 
     // dist: { 
     // files: { 
     //  '<%= yeoman.dist %>/styles/main.css': [ 
     //  '.tmp/styles/{,*/}*.css', 
     //  '<%= yeoman.app %>/styles/{,*/}*.css' 
     //  ] 
     // } 
     // } 
    }, 
    htmlmin: { 
     dist: { 
     options: { 
      /*removeCommentsFromCDATA: true, 
      // https://github.com/yeoman/grunt-usemin/issues/44 
      //collapseWhitespace: true, 
      collapseBooleanAttributes: true, 
      removeAttributeQuotes: true, 
      removeRedundantAttributes: true, 
      useShortDoctype: true, 
      removeEmptyAttributes: true, 
      removeOptionalTags: true*/ 
     }, 
     files: [{ 
      expand: true, 
      cwd: '<%= yeoman.app %>', 
      src: ['*.html', 'views/*.html'], 
      dest: '<%= yeoman.dist %>' 
     }] 
     } 
    }, 
    // Put files not handled in other tasks here 
    copy: { 
     dist: { 
     files: [{ 
      expand: true, 
      dot: true, 
      cwd: '<%= yeoman.app %>', 
      dest: '<%= yeoman.dist %>', 
      src: [ 
      '*.{ico,png,txt}', 
      '.htaccess', 
      'bower_components/**/*', 
      'img/{,*/}*.{gif,webp}', 
      'fonts/*' 
      ] 
     }, { 
      expand: true, 
      cwd: '.tmp/img', 
      dest: '<%= yeoman.dist %>/img', 
      src: [ 
      'generated/*' 
      ] 
     }] 
     } 
    }, 
    concurrent: { 
     server: [ 
     'coffee:dist' 
     ], 
     test: [ 
     'coffee' 
     ], 
     dist: [ 
     'coffee', 
     'imagemin', 
     'svgmin', 
     'htmlmin' 
     ] 
    }, 
    karma: { 
     unit: { 
     configFile: 'karma.conf.js', 
     autoWatch: true 
     } 
    }, 
    cdnify: { 
     dist: { 
     html: ['<%= yeoman.dist %>/*.html'] 
     } 
    }, 
    ngmin: { 
     dist: { 
     files: [{ 
      expand: true, 
      cwd: '<%= yeoman.dist %>/scripts', 
      src: '*.js', 
      dest: '<%= yeoman.dist %>/scripts' 
     }] 
     } 
        }] 
     } 
    }, 
    uglify: { 
     dist: { 
     files: { 
      '<%= yeoman.dist %>/scripts/scripts.js': [ 
      '<%= yeoman.dist %>/scripts/scripts.js' 
      ] 
     } 
     } 
    } 
    }); 

    grunt.registerTask('server', function (target) { 
    if (target === 'dist') { 
     return grunt.task.run(['build', 'open', 'connect:dist:keepalive']); 
    } 

    grunt.task.run([ 
     'clean:server', 
     'concurrent:server', 
     'connect:livereload', 
     'open', 
     'watch' 
    ]); 
    }); 

    grunt.registerTask('test', [ 
    'clean:server', 
    'concurrent:test', 
    'connect:test', 
    'karma' 
    ]); 

    grunt.registerTask('build', [ 
    'clean:dist', 
    'useminPrepare', 
    'concurrent:dist', 
    'concat', 
    'copy', 
    'cdnify', 
    'ngmin', 
    'cssmin', 
    'uglify', 
    'rev', 
    'usemin' 
    ]); 

    grunt.registerTask('default', [ 
    'jshint', 
    'test', 
    'build' 
    ]); 
}; 
+0

đầu ra là gì nếu bạn chạy các nhiệm vụ với 'cờ --verbose'? – steveax

+0

Tôi đã cập nhật bài đăng. Cảm ơn! :) – Karan

+0

bạn đã bao giờ tìm ra điều này chưa? Điều này bắt đầu xảy ra trên một dự án của tôi đã được làm việc trước đây ... –

Trả lời

26

Vì vậy, tôi cũng gặp vấn đề này, và tôi tin rằng nó phải làm, như bạn nghi ngờ, máy ảo hết bộ nhớ (bạn đang sử dụng một hộp số 5 đô la?). Quá trình đồng thời cố gắng chạy la bàn, sao chép, imagemin, svgmin và html cùng một lúc, có thể gây ra vấn đề, vì vậy trong bản dựng của tôi, tôi chỉ bình luận quy tắc đồng thời và chèn các quy trình riêng lẻ vào bên dưới và dường như hoàn thành. Một chút chậm, nhưng thats chi phí trở thành một kẻ bần tiện :)

grunt.registerTask('build', [ 
    'clean:dist', 
    'useminPrepare', 
    //'concurrent:dist', 
    'compass', 
    'copy:styles', 
    'imagemin', 
    'svgmin', 
    'htmlmin', 
    'autoprefixer', 
    'concat', 
    'cssmin', 
    'uglify', 
    'modernizr', 
    'copy:dist', 
    'rev', 
    'usemin' 
]); 
+0

Ứng dụng của tôi cũng được triển khai trên hộp DO nhỏ nhất.Tôi triển khai ứng dụng của tôi bằng cách sử dụng ansible và gần đây tôi cũng bắt đầu nhận được lỗi từ uglify (nó không nói nhiều, chỉ 'Killed' trong 50% các trường hợp). Sau khi đổi kích thước hộp thành $ 10/tháng, uglify dường như hoạt động tốt. –

5

Đã xảy ra với tôi một thời gian trước khi tôi chạy nó trên bộ nhớ thấp, khi quá trình hết RAM.

0

Tôi chạy vào ngày hôm nay và đã có thể chẩn đoán vấn đề bằng cách chạy grunt serve -v --force.

Đã tắt rằng tôi thiếu tệp tôi đã nhập trong main.scss của mình, nhưng thông báo lỗi này chỉ xuất hiện sau khi thêm cờ --force.

2

Vấn đề của tôi giống với 'jbll' SASS không được biên dịch chính xác do tệp .scss bị thiếu.

error app/styles/main.scss (Line 6: File to import not found or unreadable: ../bower_components/ionic/scss/ionic.scss.

Trong trường hợp của tôi tập tin đã bị mất bởi vì tôi đã không cài đặt tất cả các gói của tôi đầu tiên. Hãy thử lệnh bower install và hy vọng rằng sẽ giải quyết vấn đề một ai đó.

+0

Cảm ơn! , điều này đã giúp tôi tìm ra vấn đề của mình. – Zentaurus

2

Mine đã bị mắc kẹt ở nhiệm vụ imagemin, sau đó sau khi chạy:

npm update 

Nó hoạt động tốt