2013-07-26 118 views
21

Có thể khởi động MongoDB từ bên trong một nhiệm vụ Grunt không? Về cơ bản khi tôi đang chạy môi trường phát triển của mình với grunt server Tôi muốn nó khởi động máy chủ MongoDB cũng có thể bằng cách chạy mongod.Khởi động MongoDB từ bên trong một nhiệm vụ Grunt

+0

Xin lỗi @SindreSorhus, tôi đã không quay lại làm việc thông qua việc này kể từ đó. Câu trả lời hiện được chấp nhận. – claydiffrient

+0

grunt-shell đang chặn, vì vậy lệnh treo phần còn lại của các bước xây dựng. – JJJ

Trả lời

20

Bạn có thể sử dụng grunt-shell để chạy lệnh:

grunt.initConfig({ 
    shell: { 
     mongo: { 
      command: 'mongod' 
     } 
    } 
}); 
39

Bạn có thể sử dụng grunt-shell-spawn để làm điều này. Câu trả lời trước đề nghị grunt-shell, chạy đồng bộ trên quá trình chính - ngăn chặn thực hiện các tác vụ khác.

shell: { 
    mongo: { 
     command: 'mongod', 
     options: { 
      async: true 
     } 
    } 
} 
23

Để thêm vào câu trả lời JJJ của, sử dụng grunt-shell-spawn nếu bạn muốn chắc chắn mỗi dự án có nó dụ MongoDB riêng với dữ liệu riêng của nó bạn sẽ làm điều này:

shell: { 
    mongodb: { 
     command: 'mongod --dbpath ./data/db', 
     options: { 
      async: true, 
      stdout: false, 
      stderr: true, 
      failOnError: true, 
      execOptions: { 
       cwd: '.' 
      } 
     } 
    } 
}, 

Ví dụ này cũng in ra chỉ lỗi.

Sau đó bạn sẽ chỉ cần thêm shell:mongodb vào danh sách nhiệm vụ grunt server của bạn (tốt nhất là nhiệm vụ đầu tiên), thêm data để .gitignore (giả sử bạn đang sử dụng git) và bạn tốt để đi của bạn.

+0

Với thiết lập mongo mặc định tôi có, tôi đã sử dụng đường dẫn db '/ data/db' mà không có dấu thư mục ban đầu. Ngoài ra, đây là một bổ sung tuyệt vời cho câu trả lời tuyệt vời của JJJ. – Scott