2015-05-05 17 views
5

Tôi putting together a streamlined development process với phản ứng và phản ứng bản địa rằng:Làm thế nào để danh sách đen các node_modules cụ thể của các gói phụ thuộc của tôi trong trình đóng gói gốc của phản ứng?

  • khuyến khích gói,
  • sử dụng babel để chuyển es6-js (nó biên dịch trước khi xuất bản/cài đặt),
  • có một sân chơi mà chúng ta hãy bạn chơi với cả hai số native và web components.

Phần web của nó hoàn toàn ổn. Đó là một nguyên nhân gây ra vấn đề và nó phải làm với packager của người phản ứng bản địa.

Điểm mấu chốt là: nếu gói đó hoặc liên kết thông qua npm link hoặc yêu cầu trực tiếp từ các sân chơi như trong giải quyết phụ thuộc require('../../') phản ứng bản địa sẽ đi mãi mãi cố gắng để xác định phụ thuộc bên trong, hầu hết thời gian gói tôi node_modules nó không bao giờ kết thúc làm việc đó .

Giải pháp tạm thời mà tôi tìm thấy là cài đặt gói trong sân chơi nhưng điều này liên quan đến việc cài đặt lại nó mỗi khi tôi cập nhật, điều này không tuyệt vời vì bạn không thể thấy ngay các thay đổi của mình (ngay cả khi nó sẽ được tự động, nó sẽ mất thời gian).

Tôi tin rằng giải pháp tốt hơn là yêu cầu người phụ thuộc giải quyết bỏ qua những mô-đun cụ thể mà tôi không cần (những người trong số devDependencies chủ yếu!). Tôi đã thử mangling react-native/packager/blacklist.js bằng cách thêm đường dẫn vào danh sách đó và thậm chí đặt kiểm tra đối với các dependency resolver nhưng không ai trong số đó sẽ làm việc.

Có thể ai đó có nhiều kinh nghiệm hơn với người đóng gói cho tôi một gợi ý về cách tôi muốn làm cho người phân giải phụ thuộc vượt qua? Ngoài ra, nó sẽ là tuyệt vời nếu packager có thể được tách ra và quá trình biến đổi còn lại để lựa chọn nhưng tôi không biết nếu đó sẽ là doable hoặc.

Trả lời

9

tôi phát hiện ra các giải pháp sau đây, dựa trên nhận xét trong default.config.js:

* If you need to override any of this functions do so by defining the file 
* `rn-cli.config.js` on the root of your project with the functions you need 
* to tweak. 

Tạo một rn-cli.config.js trong thư mục gốc của dự án của bạn với nội dung sau:

var blacklist = require('react-native/packager/blacklist'); 

var config = { 
    getBlacklistRE(platform) { 
    return blacklist([ 
     /node_modules\/my-package\/excluded-dir\/.*/ 
    ]); 
    } 
}; 

module.exports = config; 

Đối số thứ hai để chức năng blacklist là danh sách bổ sung các đường dẫn được liệt kê trong danh sách đen, có thể là các biểu thức chính quy. Xem react-native/packager/blacklist.js để biết thêm ví dụ.

+0

có thể bỏ qua tất cả các tệp và thư mục cho đường dẫn regex không? ví dụ, làm thế nào bạn sẽ bỏ qua tất cả bên dưới node_modules? –

+0

Bạn thực sự không muốn 'bỏ qua' tất cả các tệp trong node_modules. Sau đó, ứng dụng của bạn chắc chắn sẽ không hoạt động. – Albert

+0

Khi có phản ứng gốc 46. Danh sách đen đã được chuyển sang 'metro-bundler'. Ví dụ ở đây: https://github.com/facebook/react-native/issues/7271#issuecomment-321842044 – Shiki

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