2009-06-17 30 views
5

Tôi muốn nén javascript trong máy nén yui, Cách viết Tạo tệp để nén javascript.Makefile mà nén javascript

Vì ngữ pháp khó và không hiểu, Bạn có thể cho tôi một mẫu Makefile cho tôi không?

+0

Tôi thành thật không biết tại sao mọi người lại phiền muộn điều này nữa. Chỉ cần phục vụ JS của bạn với mã hóa gzip và được thực hiện với nó. Gzip sẽ nén văn bản rất hiệu quả. – SpliFF

+0

Tất nhiên tôi mong đợi hiệu quả chuyển giao hiệu quả. Ngoài ra, tôi mong đợi hiệu ứng của độ khó nhỏ khi đọc mã js của tôi. – freddiefujiwara

+3

@SpliFF: vì việc rút gọn làm cho gzip hiệu quả hơn. Nó tạo nên sự khác biệt nếu bạn bị kẹt với một số khuôn khổ JS cồng kềnh ... – Kornel

Trả lời

10

makefile của bạn sẽ giống như

code.compressed.js: code.js 
    compressor -o [email protected] $< 

Lưu ý rằng dòng thứ hai được thụt vào với một nhân vật tab, không chỉ không gian. Tiện ích tạo ra quan tâm đến điều này.

code.compressed.js là tên tệp cần ghi vào, code.js là tệp cần nén và compressor là chương trình đang thực hiện nén.

Cờ -o cho biết tệp đầu ra, theo quy ước của trình biên dịch và các công cụ tương tự. Bạn có thể khác nhau; kiểm tra tài liệu của nó.

Biến [email protected] là viết tắt của Makefile cho "mục tiêu của quy tắc này", code.compressed.js trong trường hợp này. Tương tự, $< là từ viết tắt của "quy tắc phụ thuộc đầu tiên của quy tắc này". Các biến này hữu ích để bạn không cần phải lặp lại chính mình, cũng không thực hiện các thay đổi trùng lặp khi các tệp được đổi tên.

Nếu bạn có nhiều file mà tất cả sẽ được nén vào một tập tin đầu ra duy nhất, bạn có thể đặt chúng tất cả trên dòng phụ thuộc, và sau đó sử dụng các biến đặc biệt $^ trong xây dựng quy tắc để xác định tất cả trong số họ:

code.compressed.js: code1.js code2.js 
    compressor -o [email protected] $^ 

Cách khác, nếu bạn muốn họ từng nén riêng biệt, bạn có thể viết một quy tắc khuôn mẫu và sử dụng nó cho tất cả trong số họ:

TARGETS = code1.cjs code2.cjs code3.cjs 

all: $(TARGETS) 

%.cjs: %.js 
    compressor -o [email protected] $< 

Hãy mặc định để xây dựng các mục tiêu đầu tiên mà nó thấy, là all trong trường hợp này. Danh sách các tệp cần nén được đưa ra bởi nội dung của biến số TARGET. % là một ký tự đại diện thực hiện sẽ thay thế để tạo các quy tắc cho các tên tệp nguồn và đích phù hợp.

+0

Cảm ơn bạn đã trả lời rất đơn giản. Tuy nhiên, có rất nhiều mã nguồn. Làm thế nào để làm cho trường hợp đó? code1.js, code2.js ,,, – freddiefujiwara

+1

Vui lòng chỉnh sửa mở rộng đó vào câu hỏi của bạn, thay vì để nó trong nhận xét. – Novelocrat

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