2013-01-03 23 views
8

Tôi đã có một số đường dẫn cấu hình trong yêu cầu-config.js như sau:Sử dụng tệp cấu hình RequireJS làm tệp xây dựng?

var require = { 
    baseUrl: '/javascript', 
    paths: { 
     'jquery': 'jquery/jquery-1.8.1.min' 
     // etc. -- several paths to vendor files here 
    }, 
} 

tôi đang cố gắng để có được tối ưu hóa làm việc để triển khai. Các docs nói rằng tôi nên có một build.js mà trông giống như sau:

({ 
    baseUrl: 'javascript', 
    paths: { 
     'jquery': 'jquery/jquery-1.8.1.min' 
    }, 
    name: 'main', 
    out: 'main-build.js' 
}) 

Có cách nào để có ưu đọc tập tin cấu hình của tôi thay vì (hoặc bổ sung cho) build.js? Tôi không muốn phải tự giữ các đường dẫn được cấu hình giống nhau trong cả hai tệp nếu chúng thay đổi.

Tôi cố gắng để chỉ cần chạy node r.js -o path/to/require-config.js, nhưng nó đã ném một lỗi, "bị thay đổi: Lỗi Cú pháp: Bất ngờ thẻ var"

Sửa: tập tin để làm rõ, tôi yêu cầu-config.js chỉ là cấu hình, không mô-đun chính của tôi. Tôi đã làm điều này vì vậy tôi có thể sử dụng cùng một cấu hình nhưng tải một mô-đun chính khác khi kiểm tra đơn vị.

Trả lời

11

Bạn cần điều chỉnh cách xác định các tùy chọn cấu hình của mình. Taken from the RequireJS documentation:

In version 1.0.5+ of the optimizer, the mainConfigFile option can be used to specify the location of the runtime config. If specified with the path to your main JS file, the first requirejs({}), requirejs.config({}), require({}), or require.config({}) found in that file will be parsed out and used as part of the configuration options passed to the optimizer:

Vì vậy, về cơ bản bạn có thể trỏ r.js xây dựng của bạn tập tin để lựa chọn cấu hình của bạn đó cũng sẽ được chia sẻ với các trình duyệt.

Bạn sẽ cần phải tận dụng the mainConfigFile option

+0

Vì vậy, tôi đoán trong html của tôi, hai thẻ tập lệnh (require-config.js, require.js với dữ liệu chính) sẽ trở thành ba (require.js với NO dữ liệu -main, require-config.js và main.js). Và sau đó tôi sẽ cấu trúc lại tập tin cấu hình để gọi 'require.config()' thay vì chỉ đặt 'var config'. Có đúng không? – keithjgrant

+0

Trong kịch bản của bạn có nhu cầu giữ cấu hình của riêng mình, tôi muốn nói yeah, đó sẽ là cách. –

+1

Hmm. Mặc dù tài liệu nói gì, nó vẫn yêu cầu tệp cấu hình của tôi ở định dạng JSON: "Lỗi: Không thể sử dụng cấu hình trong mainConfigFile /opt/shootq/nimbus/public/javascript/require-config.js vì không thể đánh giá chính xác được Hãy thử chỉ bằng cách sử dụng một cấu hình cũng là JSON hợp lệ, hoặc không sử dụng mainConfigFile và thay vào đó sao chép các giá trị cấu hình cần thiết vào một tệp xây dựng hoặc các đối số dòng lệnh được cung cấp cho trình tối ưu hóa. " – keithjgrant

0

Để tham khảo khác:

https://github.com/jrburke/r.js/blob/master/build/example.build.js

Các thiết lập xây dựng (không cần phải lặp lại config.js bạn vùi lib đây):

baseUrl: 'app', 
name: 'assets/js/lib/almond', // or require 

// Read config and then also build it into the app 
mainConfigFile: 'app/config.js', 
include: ['config'], 

// Needed for almond (and does no harm for require) 
wrap: true,