2013-03-20 38 views
6

Tôi đang sử dụng git (qua GitHub) để điều khiển phiên bản cho các dự án của mình. Tôi vẫn còn mới với điều này nhưng tôi muốn biết thực hành tốt nhất về cách giữ các tệp cssjs được đồng bộ hóa giữa các môi trường.kiểm soát phiên bản: cách kiểm soát phiên bản nén/rút gọn css và js giữa các môi trường

Ví dụ: Giả sử tôi viết một tập lệnh js trên dev. Tôi hài lòng với công việc của mình và tôi cố gắng thử nghiệm. Vâng về thử nghiệm tôi sẽ muốn có một phiên bản minified/nén. Làm thế nào tôi có thể thực hiện được điều đó mà không cần nhiều công việc trên không? Các anh làm gì? Tôi giả sử nó là một phần của một số loại kịch bản triển khai có thể nén mã và đẩy nó vào bất kỳ môi trường nào tôi chỉ định.

Điều này sẽ trả lời một câu hỏi khác: Còn về các tệp header (và/hoặc footer) của tôi trong dự án của tôi? Nếu dev của tôi có:

<link rel="stylesheet" href="<?php echo base_url(); ?>css/main.css">

testing của tôi có:

<link rel="stylesheet" href="<?php echo base_url(); ?>css/main.min.css">

Đó là tất cả tốt, nhưng những gì nếu tôi cần phải thay đổi tiêu đề của tôi? Làm thế nào tôi có thể tách rời tất cả những thứ này với nhau? Nếu tôi thực hiện thay đổi cho tiêu đề của tôi và đẩy để thử nghiệm hoặc sản xuất tôi sẽ mất .min từ đó bao gồm dòng.

Hiện tại những gì tôi làm để triển khai bản cập nhật chỉ đơn giản là git pull origin [branch] từ dòng lệnh bên trong môi trường mà tôi muốn cập nhật.

Một lần nữa, tôi đang tìm kiếm phương pháp hay nhất, bất kể việc học tập nào yêu cầu. Cảm ơn!

+8

Tôi chắc chắn sẽ không ** giữ mã nguồn nhỏ trong điều khiển phiên bản. Viết một kịch bản xây dựng của một số loại (nhiều tùy chọn), kiểm tra kịch bản đó vào điều khiển phiên bản và sử dụng nó để rút gọn (vv) khi triển khai. – Pointy

+0

Chỉ cần một fyi, có đường dẫn tuyệt đối sẽ làm cho mọi việc dễ dàng hơn để viết lại chúng trong một bước xây dựng hoặc triển khai :), thêm một băm vào tên tệp nén để bạn có thể lưu chúng trong thời gian dài. –

+0

@Pointy +1 vì không giữ các tệp được rút gọn trong kiểm soát nguồn. Nó giống như việc giữ các tệp nhị phân được biên dịch trong điều khiển nguồn. – Floremin

Trả lời

5

Bạn có thể muốn kiểm tra các công cụ tiền xử lý, chẳng hạn như LESS hoặc Sass. Những công cụ này cho phép bạn viết CSS (tôi tin rằng họ có thể xử lý JS, vì mục đích khai thác) và thiết lập các kịch bản xử lý cách biên dịch mã, dựa trên môi trường. Sau đó, bạn sẽ viết mã của mình trong các tệp "nguồn" và thiết lập bộ tiền xử lý để biên dịch mã theo các cài đặt được đặt ra trong tệp cài đặt (đối với Sass, điều này có thể dễ dàng thực hiện với Bạn sẽ chỉ giữ lại các tệp nguồn trong kho lưu trữ (thiết lập Git để bỏ qua các phiên bản đã biên dịch) và thiết lập các móc hậu nhận để biên dịch các tệp nguồn trên máy chủ. . HTML của bạn sau đó có thể được viết để truy cập các tập tin được biên dịch (nên có cùng tên trên các môi trường), do đó bạn không phải viết logic xác định trên bay, mọi lúc, môi trường mã nào đang chạy.

+0

Tôi thực sự thích âm thanh của điều này và đó là một tin tuyệt vời vì một trong những điều mà danh sách dự án là kết hợp LESS hoặc SASS, có lẽ là thứ sau vì nó mạnh mẽ hơn. Cảm ơn đã viết lên. –

+2

Đây là một đề xuất thực sự tốt - hãy xem xét cẩn thận những công cụ đó và chọn một công cụ phù hợp với triết lý của bạn, nhưng bạn sẽ thực sự biết ơn sau này. – Pointy

1

Thông thường một tệp được rút gọn được tạo bởi CMS của bạn khi tải trang. Vì vậy, từ một quan điểm mã bạn không cần phải theo dõi phiên bản được rút gọn khi tất cả các mã được theo dõi trong các tệp js và css thực tế của bạn. Vì vậy, các bản sao được rút gọn chỉ có thể được bỏ qua bằng cách sử dụng tệp .gitignore.

tập tin .gitignore tôi thường trông giống như:

css-min   #directory to store generated minified css files 
js-min    #directory to store generated minified js files 
tmp    #directory to store temporary files 
files/images/cache #directory for storing generated images such as thumbnails 
settings.php  #File that stores system variables. 

Các tập tin cài đặt được sử dụng để thiết lập các biến toàn cầu như nền tảng của bạn như "dev", "dàn", "sản xuất". Sau đó, trong các tệp khác của bạn, bạn có thể kiểm tra nền tảng để sử dụng tệp css/js nào. Vì tệp đó bị bỏ qua bởi kho lưu trữ của bạn, bạn có thể thực hiện các cài đặt cụ thể cho mỗi nền tảng.

if ($GLOBAL['platform'] = PLATFORM_DEV) { 
    $path = 'css/main.css'; 
} 
elseif ($GLOBAL['platform'] = PLATFORM_STAGE) { 
    $path = 'css-min/main.min.css'; 
} 

<link rel="stylesheet" href="<?php print base_url(); print $path; ?>"> 
1
  1. Đừng đặt phiên bản rút gọn của CSS, JS vào kiểm soát phiên bản. Đó là bản sao.

  2. Git có thể được sử dụng để xóa bỏ nhưng mục đích của nó không được triển khai.

  3. Đối với thẻ CSS bao gồm, thật dễ dàng. Một roundup nhanh chóng là sử dụng khung của bạn env vairable. Như tôi biết CodeIgniter có chức năng này. Nếu thử nghiệm env ==, bao gồm phiên bản được rút gọn, nếu không, bao gồm các phiên bản thô.

Bên cạnh đó bạn cần plugin xây dựng tập lệnh hoặc khung để tự động tạo phiên bản được rút gọn.

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