2012-01-18 14 views

Trả lời

8

Đặt mã CoffeeScript của bạn trong thư mục src và mã JavaScript được biên dịch trong thư mục lib.

Sau đó, trong tệp package.json, hãy khai báo main làm tệp js trong thư mục lib. Sau đó, người dùng gói của bạn sẽ yêu cầu tệp js thay vì tệp cà phê.

Bạn có thể lấy @ TrevorBurnham's repository làm ví dụ.

+0

Nó loại cảm giác kỳ lạ cam kết mã biên dịch, nhưng tôi đoán tôi sẽ cố gắng đó. –

+1

Kho lưu trữ git có được liên kết với npm không? Bởi vì nếu không, tôi có thể tạo thư mục lib ngay trước khi npm xuất bản và xóa nó sau. –

+1

@MarcelM. Nó không phải. BTW, bạn có thể sử dụng .gitignore để bỏ qua thư mục 'lib' thay vì xóa nó. – qiao

8

Tôi đã kết thúc bằng chỉ một thư mục src trên kho lưu trữ git của mình; tệp .gitignore có một dòng cho lib; và tệp rỗng .npmignore. Cần có tệp .npmignore trống vì nếu không có trên mô-đun của bạn, thay vào đó, .gitignore của bạn được sử dụng.

Tôi chỉ cần thêm một Cakefile với một nhiệm vụ để xây dựng thư mục src tôi sử dụng coffee --compile --output lib/ src/pretestprepublish nhiệm vụ để package.json để xây dựng trước khi thử nghiệm và xuất bản.

"scripts": { "pretest": "cake build", "prepublish": "cake build", }

Giải pháp này giữ kho git của tôi sạch (không có mã biên dịch), nhưng thêm mã javascript của tôi để lib khi xuất bản vào NPM.

+2

Bạn có thể thấy điều này làm việc tại https://github.com/reaktivo/zootool –

+0

Lưu ý: điều này không (chưa) làm việc cho "npm install reaktivo/zootool". Ai đó có thể muốn làm một cái gì đó tương tự nếu họ chia đôi repo của bạn và đang chờ bạn để có bản vá của họ. –

1

Tôi chỉ bắt đầu với CoffeeScript, nhưng tôi muốn đề nghị như sau:

  1. Mã cửa hàng CoffeeScript của bạn trong src/*.coffee,
  2. Viết main.js trong thư mục gốc của dự án mà NPM sẽ nắm bắt, và có nó chỉ đơn giản là làm một cái gì đó như require('coffee-script'); require('./src/my_lib.coffee').

Ở đó. Bạn không bao giờ, bao giờ biên dịch mã của bạn; tất cả được xử lý một cách minh bạch. Bạn không kiểm tra mã được biên dịch thành git, cũng như bạn không xuất bản JavaScript được biên dịch thừa cùng với CoffeeScript chưa được biên dịch sang NPM.

Edit: Trong nhiều phiên bản gần đây cà phê scirpt, bạn nên require('coffee-script/register');

+2

Cảm thấy giống như làm cho 'cà phê-script' một yêu cầu cho một mô-đun bạn không phát triển không phải là ý tưởng tốt nhất. –

+0

Tôi không chắc là tôi hiểu được chú thích ở trên - làm thế nào để có 'cà phê-script' một phụ thuộc khác với việc có' gạch dưới' như là một phụ thuộc? – lambinator

+0

Dấu gạch dưới là một thư viện, trong khi CoffeeScript là một ngôn ngữ được biên dịch. Bạn cần chức năng của thư viện khi chạy. Với một ngôn ngữ biên dịch bạn không (nhất thiết). Tất cả những gì bạn cần là mã kết quả. (Nếu đó là ngôn ngữ diễn giải, bạn * sẽ * cần chức năng trong thời gian chạy.) – 1j01

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