2015-10-19 27 views
13

Xét có Webpack cấu hìnhđộng yêu cầu trong Webpack ở thời gian xây dựng

... 
entry: { 
    'bundle-with-dependency-a': 'common-entry.js', 
    'bundle-with-dependency-b': 'common-entry.js' 
}, 
resolve: { 
    alias: { 
     'dep-a': ..., 
     'dep-b': ... 
    }, 
}, 

và tôi mong chờ ở common-entry.js một cái gì đó như thế này:

require('dep-' + entryName.slice(-1)); 

Tức là Tôi muốn cung cấp định nghĩa cho các yêu cầu cụ thể từ cấu hình.

Vấn đề là có thể có nhiều hơn 2 tùy chọn phụ thuộc, tôi tránh sao chép. Và tôi sắp thực hiện điều này tại thời điểm xây dựng, thay vì yêu cầu các khối với JSONP.

Làm cách nào để yêu cầu này được tạo động?

Tùy chọn duy nhất tôi có ở đây là có cấu hình khác nhau cho từng dep, nhưng điều này đòi hỏi phải thực hiện nhiều lần Webpack thay vì duy nhất. Không phải rất thuận tiện.

Trả lời

4

Sử dụng :

webpack.config.js

{ 
    entry: { 
    'bundle-with-dependency-a': 'imports?depName=>"dep-a"!./common-entry.js', 
    'bundle-with-dependency-b': 'imports?depName=>"dep-b"!./common-entry.js', 
    }, 
    // ... 
} 

Biến depName sau đó sẽ được tiếp xúc với các mô-đun common-entry.js.

+0

Có vẻ tốt, tôi không chắc chắn rằng tôi thậm chí biết rằng các trình tải có thể được sử dụng trong các mục nhập. Tôi tự hỏi nếu có những cách khác hơn là 'nhập khẩu', có thể có một số deps với cùng một tiền tố ('a' hoặc 'b') mà sẽ làm cho chuỗi truy vấn loader khá dài. – estus

+0

Sau đó, tôi khuyên bạn nên xem xét việc tạo trình tải của riêng bạn hoặc tạo một hàm tạo chuỗi truy vấn cho bạn. Một ví dụ: 'import ({depName: 'dep-a'}) + './Common-entry.js'' –

+0

Vâng, việc xây dựng truy vấn là đủ tốt. Tôi tự hỏi liệu có những bùng binh khác không, ví dụ: 'context' và ContextReplacementPlugin (tài liệu Webpack vô lý thiếu khả năng sử dụng của chúng). – estus

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