2010-12-10 28 views
10

Tôi đang cố gắng viết một makefile cơ bản kết hợp nhiều tệp js thành một tệp duy nhất và sau đó thực hiện tương tự nhưng nén chúng.Makefile để kết hợp các tệp js và tạo một phiên bản nén

Cho đến giờ tôi có phiên bản này có thể làm cho phiên bản nén được tốt.

# Set the source directory 
srcdir = src/ 

# Create the list of modules 
modules = ${srcdir}core.js\ 
      ${srcdir}sizzle.js\ 
      ${srcdir}json2.js\ 
      ${srcdir}ajax.js\ 
      ${srcdir}attribute.js\ 
      ${srcdir}content.js\ 
      ${srcdir}cookie.js\ 
      ${srcdir}css.js\ 
      ${srcdir}event.js\ 
      ${srcdir}json.js\ 
      ${srcdir}location.js\ 
      ${srcdir}opacity.js\ 
      ${srcdir}ready.js\ 
      ${srcdir}size.js\ 
      ${srcdir}init.js 

# Compress all of the modules into spark.js 
spark.js: ${modules} 
    java -jar yuicompressor.jar -o [email protected] $^ 

Có ai biết làm cách nào để thêm một phiên bản không nén có tên là spark-dev.js không? Tôi đã cố gắng để sử dụng mèo nhưng tôi đã không nhận được rất xa. Đây là makefile đầu tiên của tôi mà tôi từng viết.

EDIT Tôi đã thử mã này với mèo

spark-dev.js: ${modules} 
    cat [email protected] $^ 
+0

Cụ thể, bạn có cố gắng sử dụng mèo không? Và chuyện gì đã xảy ra? – slowdog

+0

@slowdog Tôi đã đặt mã mà tôi đã thử trong bản chỉnh sửa của mình. – Olical

+0

@slowdog Oh, và như những gì đã xảy ra, nó lặp lại nội dung của tất cả các tệp sau đó được in: 'make: *** [spark-dev.js] Lỗi 1' – Olical

Trả lời

9

Bạn gần như có :-) này nên làm việc:

spark-dev.js: ${modules} 
    cat > [email protected] $^ 

Bối cảnh: Chức năng của cat là (cố gắng) mở tất cả các tập tin được liệt kê trên dòng lệnh của nó, và đổ các nội dung vào stdout. Cú pháp > [email protected] được hiểu bởi trình bao để có nghĩa là "tạo tệp [email protected] và kết nối lệnh của lệnh này với nó", vì vậy bây giờ chúng tôi kết thúc với nội dung của $^ kết hợp với nhau thành [email protected].

+0

Hmm, dừng in nội dung, nhưng nó hiện đang ném lỗi này: 'makefile: 23: *** dấu phân tách bị thiếu. Dừng lại.' – Olical

+0

Đảm bảo rằng bạn có một ký tự tab, không phải dấu cách, ở đầu dòng với lệnh 'cat'. Sao chép các mảnh makefile vào và ra khỏi trình duyệt là một nỗi đau vì các tab có xu hướng biến thành không gian ... – slowdog

+0

Được rồi, bây giờ nó đang hoạt động, nhưng chỉ thực hiện lệnh đầu tiên, có cách nào để thực hiện cả hai không? – Olical

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