2016-09-08 16 views
5

Tôi đang xây dựng ứng dụng của mình bằng cách sử dụng các dịch vụ vi phân riêng biệt, mỗi dịch vụ có kho lưu trữ và phụ thuộc npm riêng và có thể nằm trên một máy chủ khác.Cách tạo package.json được chia sẻ cho nhiều kho lưu trữ npm

Tôi đang tìm cách đặt tất cả các phụ thuộc vào một tệp package.json toàn cầu có thể truy cập bằng url, vì vậy, theo cách đó, tôi có thể cập nhật phiên bản phụ thuộc được chia sẻ mà không chạy trên tất cả các dịch vụ vi mô khác nhau và cập nhật từng cái một.

Có thể không?

Trả lời

7

Rất tiếc, npm không hỗ trợ chỉ định tệp package.json gốc. Tính năng này là proposed some time ago, nhưng người bảo trì npm đi đến kết luận rằng nó phải đạt được bằng các công cụ bên ngoài.

Tất nhiên bạn có thể tự mình viết công cụ đó. Có một trong các lỗ hổng có thể có:

  1. Tạo thư viện có chứa tất cả các phụ thuộc được chia sẻ. Trong ví dụ này, nó sẽ được gọi là shared-deps.

  2. Tạo merge.js kịch bản mà thêm phụ thuộc chia sẻ để package.json tập tin địa phương, và thêm nó vào shared-deps thư viện:

    const fs = require('fs') 
    
    const localPackageJson = require('../../package.json') 
    const sharedPackageJson = require('./package.json') 
    
    Object.assign(localPackageJson.dependencies, sharedPackageJson.dependencies) 
    
    fs.writeFileSync('../../package.json', JSON.stringify(localPackageJson, null, 2)) 
    
  3. Thêm vào package.json của ứng dụng đó sẽ được sử dụng phụ thuộc này được chia sẻ sau hậu cài đặt móc: tog

    "scripts": { 
        "postinstall": "node ./node_modules/a/merge.js" 
    } 
    
  4. Bây giờ, khi bạn chạy npm install, phụ thuộc chia sẻ của bạn sẽ được cài đặt ether với thư viện shared-depspackage.json của bạn sẽ được cập nhật sau đó.


+0

tuyệt vời, cảm ơn !! –

+0

Tôi không hiểu. Nếu điều này được đặt trong postinstall, hợp nhất được thực hiện * sau khi * cài đặt được thực hiện, và như vậy làm thế nào các phụ thuộc hợp nhất sẽ được cài đặt? Điều đó có nghĩa là nó cần phải gọi 2 npm cài đặt liên tiếp? –

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