2013-08-12 28 views
20

Có thể đặt các tập tin cấu hình Grunt vào một thư mục con của dự án không? Tôi muốn làm điều này để giữ cho mọi thứ được tổ chức tốt hơn.Đặt Grunt vào một thư mục con

Ví dụ:

  • myproject/grunt/Gruntfile.js

  • myproject/grunt/package.json

  • myproject/grunt/node_modules/

tôi đang gặp vấn đề chạy lệnh từ Gruntfile.js theo cấu hình này. Grunt có thể xử lý tìm đến thư mục mẹ? Hoặc có lẽ tôi đang làm nó sai

sass: { 
    dev: { 
     files: { 
      "../style.css": "../scss/style.scss" 
     } 
    } 
} 

Khi tôi chạy Grunt này chỉ dường như nhún vai, không hiểu rằng tôi muốn nó để tìm trong thư mục cha ...

Source file "scss/style.scss" not found. 

Trả lời

27

Vâng, điều này nên được có thể, nhưng có thể bạn sẽ muốn sử dụng tùy chọn dòng lệnh grunt.file.setBase method hoặc --base để thực hiện các tác vụ giống như bạn đã đặt Gruntfile vào thư mục gốc của dự án. Nếu không, bạn sẽ gặp phải nhiều vấn đề khác nhau với các tác vụ, theo mặc định, sẽ không ghi vào đường dẫn bên ngoài thư mục làm việc. Ví dụ: force option trên trình cắm bổ trợ gọn gàng.

Dưới đây là một ví dụ làm biến đổi các sample Gruntfile from the Getting Started page sử dụng phương pháp này:

module.exports = function(grunt) { 

    // if you put the call to setBase here, then the package.json and 
    // loadNpmTasks paths will be wrong!!! 

    // Project configuration. 
    grunt.initConfig({ 
    pkg: grunt.file.readJSON('package.json'), 
    uglify: { 
     options: { 
     banner: '/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */\n' 
     }, 
     build: { 
     src: 'src/<%= pkg.name %>.js', 
     dest: 'build/<%= pkg.name %>.min.js' 
     } 
    } 
    }); 

    // Load the plugin that provides the "uglify" task. 
    grunt.loadNpmTasks('grunt-contrib-uglify'); 

    // now that we've loaded the package.json and the node_modules we set the base path 
    // for the actual execution of the tasks 
    grunt.file.setBase('../') 

    // Default task(s). 
    grunt.registerTask('default', ['uglify']); 

}; 

tôi không sử dụng Sass, vì vậy không thể bình luận về việc liệu bất cứ điều gì có thể là sai với cấu hình nhiệm vụ của bạn, nhưng ở trên hoạt động như một sửa đổi của ví dụ Bắt đầu.

+0

Cảm ơn câu trả lời của bạn. Bạn có thể cho tôi một ví dụ? Ngay sau khi tôi nhìn thấy một ví dụ tôi sẽ hiểu. Tôi đã đọc tài liệu nhưng không có ví dụ không may. Nó sẽ là một cái gì đó như 'grunt.file.setBase ('../');'? Tôi đã thêm dòng đó vào tệp của mình nhưng nó không có sự khác biệt. – SparrwHawk

+0

Bỏ qua tôi, tôi là một thằng ngốc. Gruntfile.js của tôi nằm trong thư mục sai.'grunt.file.setBase ('../'); thực sự là con đường để đi. Cảm ơn – SparrwHawk

+0

@SparrwHawk xem câu trả lời đã chỉnh sửa – explunit

Các vấn đề liên quan