Composer thể được sử dụng để quản lý javascript phụ thuộc nào là tốt. Theo nhà soạn nhạc mặc định chỉ sử dụng một kho lưu trữ được gọi là Packagist, đây là kho lưu trữ cho các thư viện PHP. Tuy nhiên, theo đề xuất here, bạn có thể thêm kho lưu trữ của riêng mình cho thư viện javascript (hoặc bất kỳ thư viện nào khác).
Dưới đây là composer.json tôi có thêm một kho lưu trữ knock-out-js tùy chỉnh:
{
"require": {
"php": ">=5.3.2",
"symfony/symfony": ">=2.0.10,<2.1.0-dev",
"doctrine/orm": ">=2.1.0,<2.2.0-dev",
"twig/extensions": "*",
"symfony/assetic-bundle": "2.0.*",
"sensio/generator-bundle": "2.0.*",
"sensio/framework-extra-bundle": "2.0.*",
"sensio/distribution-bundle": "2.0.*",
"jms/security-extra-bundle": "1.0.*",
"knockout/knockout-js": "2.1.0"
},
"autoload": {
"psr-0": {
"Acme": "src/"
}
},
"repositories": [
{
"type": "package",
"package": {
"name": "knockout/knockout-js",
"version": "2.1.0",
"source": {
"type": "git",
"url": "https://github.com/SteveSanderson/knockout.git",
"reference": "v2.1.0"
}
}
},
{
"type": "package",
"package": {
"name": "knockout/knockout-js",
"version": "2.0.0",
"source": {
"type": "git",
"url": "https://github.com/SteveSanderson/knockout.git",
"reference": "v2.0.0"
}
}
}
]
}
Repository bao gồm các gói (đó là sự kết hợp của nguồn và phiên bản của thư viện). Ở đây tôi có 2 gói (2.1.0, 2.0.0) đã chứa sẵn nguồn knockout.js, vì vậy bạn không phải biên dịch bất cứ thứ gì.
Bây giờ, có những lúc bạn có thể muốn biên dịch và sử dụng mã mới nhất. Để tự động hóa thói quen này, tôi đã tìm ra, người ta có thể sử dụng git post-checkout hook. Thêm một gói mới mà đề cập đến mã mới nhất:
{
"type": "package",
"package": {
"name": "knockout/knockout-js",
"version": "master",
"source": {
"type": "git",
"url": "https://github.com/SteveSanderson/knockout.git",
"reference": "master"
}
}
}
tham khảo gói này trong yêu cầu phần:
"knockout/knockout-js": "master"
Và một cái móc hậu kiểm với xây dựng hướng dẫn. Đối với knockout.js nó rất đơn giản:
// vendor/knockout/knockout-js/.git/hooks/post-checkout
#!/bin/sh
echo "Building knockout.js";
`cd build && ./build-linux`;
Điều này không liên quan đến câu hỏi của tôi – Dziamid
như thế nào? Bạn đã hỏi cách bao gồm nhà cung cấp javascript trong dự án của bạn. Đây là cách tôi làm điều đó ... assetic xử lý việc biên dịch cà phê và ít tập tin hơn. – MDrollette
Câu hỏi đặt ra là cài đặt/cập nhật thư viện của nhà cung cấp javascript. – Dziamid