2014-06-26 22 views
8

Tôi đang cố gắng chạy nhiều lệnh CLI từ script.postinstall của grunt. Tôi không thể tìm ra cách để có được cả hai để chạy. Nếu tôi thêm lệnh thứ hai không chạy. Riêng cả hai đều làm việc trên postinstall và trong giao diện điều khiển.Làm thế nào để bạn chạy nhiều tập lệnh grunt.postinstall?

Tôi đã thử gói chúng trong một mảng:

"scripts": { 
    "postinstall": ["node_modules/.bin/bower install", "grunt setup"] 
}, 

Tôi đã cố gắng tách chúng bằng một dấu chấm phẩy:

"scripts": { 
    "postinstall": "node_modules/.bin/bower install; grunt setup" 
    }, 

tôi dường như không thể tìm ra giải pháp trên NPM Scripts

Gruntfile.js của tôi cho các phần này trông giống như sau:

mkdir: { 
    setup: { 
     options: { 
      create: [ 
       'app/main/source/www', 'app/main/build', 'app/main/docs', 'app/main/tests', 
       'app/development', 
       'app/releases' 
      ] 
     } 
    } 
} 

grunt.registerTask('setup', [ 
    'mkdir:setup', 
    'bowercopy:wordpress' 
]); 

Trong trường hợp nó giúp đây là một phiên bản parred xuống của package.json của tôi mà tôi đã cắt các ví dụ mã trên, chủ yếu là để cung cấp ngữ cảnh.

{ 
    "name": "webapp", 
    "version": "0.1.0", 
    "description": "A web app using bower and grunt", 
    "main": "gruntfile.js", 
    "scripts": { 
    "postinstall": "node_modules/.bin/bower install" 
    }, 
    "repository": { 
    "type": "git", 
    "url": "someurl.com" 
    }, 
    "keywords": [ 
    "web", "app" 
    ], 
    "author": { 
    "company": "somecompany", 
    "name": "somename", 
    "email": "[email protected]" 
    }, 
    "license": "MIT", 
    "homepage": "https://someurl.com", 
    "bugs": { 
    "url": "someurl.com" 
    }, 
    "devDependencies": { 
    "grunt": "^0.4.5", 
    "bower" : "~1.3.5", 
    etc 
    } 
} 

Trả lời

32

Bạn có thể sử dụng & & để chạy nhiều lệnh trong script NPM phần

"scripts": { 
    "postinstall": "bower install && grunt setup" 
}, 
+0

bạn không thể làm điều này trên các cửa sổ. – eugenekgn

+1

Tôi sử dụng Windows chủ yếu và đã sử dụng kỹ thuật này trước đây. Nó có thể làm việc – kenwarner

+0

Cảm ơn tuyệt vời .. cảm ơn! – eugenekgn

8

Bạn có thể thử viết một tập lệnh Bash thực thi hai lệnh đó và chạy thay thế.

post_install.sh:

#!/bin/bash 
node_modules/.bin/bower install 
grunt setup 

package.json:

"scripts": { 
    "postinstall": "./post_install.sh" 
    }, 
+0

Hi Chris, tại đầu tiên nó dường như làm việc, nhưng nó xuất hiện để thất bại một nơi nào đó như cài đặt bower không kéo xuống t ông phụ thuộc, và thiết lập grunt không tạo ra các heirarchy tập tin dự án. Nó dường như chạy postinstall mặc dù ??? Làm thế nào bạn sẽ gỡ lỗi này? Có vẻ như không có bất kỳ sai lầm nào. – mtpultz

+1

Xin lỗi Chris, công trình tuyệt vời. Vì lý do gì đó, tôi đã mở các tệp .sh văn bản tuyệt vời theo mặc định bằng trình soạn thảo văn bản của mình. Vì vậy, nó sẽ "chạy" post_install.sh, nhưng thực sự nó chỉ cố gắng mở lại những gì tôi đã mở trong tuyệt vời – mtpultz

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