5

Tôi mới sử dụng cả Sails và grunt nên tôi có thể thiếu thông tin rõ ràng. Tôi đang cố gắng tự động làm mới ứng dụng buồm trong trình duyệt bất cứ khi nào tệp thay đổi.Tải bản tải xuống để làm việc với Sails.js

Tôi khởi động ứng dụng với sails lift và nó chạy trên cổng mặc định 1337.

Tôi đã thử thêm options: {livereload:true} vào cấu hình grunt-contrib-watch của mình nhưng theo như tôi hiểu tôi cần phải bằng cách nào đó tiêm JavaScript tải trọng vào trang của tôi?

Tôi đã cố gắng sử dụng grunt-contrib-connect với tùy chọn livereload để chèn JavaScript nhưng dường như chỉ bắt đầu một máy chủ khác. Khi tôi điều hướng đến máy chủ bắt đầu (localhost:8000), tôi chỉ thấy cấu trúc thư mục. Tuy nhiên, JavaScript tải gan được tiêm.

Tôi muốn tránh tải xuống trình cắm Chrome Plugin nếu có thể.

Cách tốt nhất để chèn JavaScript tải lên ứng dụng Sails của tôi là gì? Hoặc tôi nên sử dụng một công cụ khác như Browsersync?

Cảm ơn bạn! :)

Trả lời

6
  1. Thêm tùy chọn livereload để nhiệm vụ/config/watch.js
module.exports = function(grunt) { 

    grunt.config.set('watch', { 
     api: { 

      // API files to watch: 
      files: ['api/**/*', '!**/node_modules/**'] 
     }, 
     assets: { 

      // Assets to watch: 
      files: ['assets/**/*', 'tasks/pipeline.js', '!**/node_modules/**'], 

      // When assets are changed: 
      tasks: ['syncAssets' , 'linkAssets'] 
     }, 
     // ADD THIS 
     options: { 
      livereload: true, 
     }, 
    }); 

    grunt.loadNpmTasks('grunt-contrib-watch'); 
}; 
  1. Thêm script livereload để bố trí của bạn, đâu đó ở cuối trước </body> thẻ, theo mặc định để views/layout.ejs:
<script src="http://localhost:35729/livereload.js"></script> 

Trừ của localhost bạn có thể sử dụng IP hoặc DNS tên của máy chủ

này sẽ làm mới trang nếu một tập tin được thay đổi trong api hoặc tài sản thư mục.

Theo mặc định Ggrunt-contrib-watch sử dụng cổng. Bạn có thể trỏ cổng khác như livereload: 8000

EDIT: Vâng, tôi thực sự không biết nếu điều này là hoàn toàn chính xác, nhưng có vẻ như bạn có thể ghi đè lên các thiết lập bố trí trong config/env/development.js. Thêm một cái gì đó như:

module.exports = { 
    views: { 
     layout: 'dev' 
    } 
} 

Sau đó bạn có thể tạo tệp bố cục riêng biệt views/dev.ejs nơi bạn có thể thêm tập lệnh tải xuống và thông số phát triển khác. Ngoài ra, bạn có thể thêm khóa livereload theo cách tương tự.

+0

Cảm ơn câu trả lời của bạn. Bạn cũng có một gợi ý làm thế nào để tự động tiêm các thẻ script (thay vì chỉ cần thêm nó vào bố trí)? Bởi vì tôi không muốn đưa nó vào chế độ sản xuất. –

+0

@PhilippBaschke Tôi đã thêm một số thông tin vào câu trả lời, không kiểm tra rằng – Bulkin

+0

Cả hai đề xuất của bạn đều hoạt động! :) Và với 'views/dev.ejs', kịch bản lệnh tải lên không hiển thị khi tôi nâng cấp --prod'. Mặc dù vậy, tôi không thích bản sao của bố cục và tôi vẫn cảm thấy nó có thể được thực hiện thông qua 'devJs' trong' tasks/config/sails-linker.js' bằng cách nào đó. Nhưng ** nó hoạt động, vì vậy cảm ơn bạn rất nhiều! :) ** –

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