2015-02-10 16 views
6

Tôi đang sử dụng Grunt và Grunt-shell để xây dựng/triển khai dự án Javascript của tôi.Grunt-shell lưu đầu ra lệnh dưới dạng biến

Tôi muốn nhận số git-commit mới nhất và lưu nó dưới dạng biến nhưng không thể hiểu cách thực hiện. Tôi đã thử gọi lại và đặt biến toàn cầu. Biến này là có thể sử dụng trong vòng một chức năng nhưng không phải từ bên trong một khối có vẻ như

grunt.initConfig({ 
... 
shell: { 
     getGitCommitNo: { 
     command: 'git rev-parse --short HEAD', 
     options: { 
      callback: function (err, stdout, stderr, cb) { 
       global['gitCommitNo'] = stdout; 
       grunt.log.ok(global.gitCommitNo); 
       cb(); 
      } 
     } 
     }, 
     philTest: { 
     command: 'echo Git Commit No: ' + global.gitCommitNo 
     }, 
... 
} 

Output:

>> Starting deployment process for version 1.1 in dev environment 

Running "shell:getGitCommitNo" (shell) task 
bfc82a9 
>> bfc82a9 

Running "shell:printTest" (shell) task 
Git Commit No: undefined 

Done, without errors. 

bất cứ ai có thể đề xuất làm thế nào tôi có thể tiết kiệm các sản phẩm của một dòng lệnh để một biến đó là sử dụng được xin vui lòng?

+0

Không chắc bạn có thể làm điều này với 'Plugin shell', nhưng bạn có thể viết một module tùy chỉnh đơn giản để làm điều đó nếu cần thiết. – jakerella

Trả lời

10

Tìm thấy rằng tôi thực sự có thể thực hiện việc này bằng cách sử dụng biến cấu hình (thay vì toàn cục) bên trong gọi lại. (Lưu ý dòng dưới đây cũng loại bỏ dòng mới).

grunt.config.set('gitCommitNo', stdout.replace('\n', '')); 

Sau đó, điều này có thể được truy cập bằng:

<%=gitCommitNo%> 
+0

Điều đó phải được đánh dấu là câu trả lời đúng. Cảm ơn rất nhiều vì chuyện này. –

+0

LƯU Ý: Tôi phải đặt 'grunt.loadNpmTasks ('grunt-shell')' ở đầu tệp Grunt của tôi, ** ở trên ** 'grunt.initConfig ({...', để làm việc này –

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