2013-09-02 38 views
13

Khi bạn cài đặt một gói NPM và sử dụng --save, --save-dev hoặc --save-optional tùy chọn để viết các gói vào tập tin package.json của bạn trong bất động sản phụ thuộc thích hợp, toàn bộ tập tin dường như được viết lại với 2 không gian thụt đầu dòng:Tôi có thể cài đặt npm theo một định dạng package.json nhất định không?

$ cat package.json 
{ 
    "name": "my-package" 
} 

$ npm install --save another-package && cat package.json 
{ 
    "name": "my-package", 
    "dependencies": { 
    "another-package": "~0.1.5" 
    } 
} 

Có cách nào để thực hiện npm theo định dạng hiện có hay để xác định định dạng tùy chỉnh (ví dụ: thụt lề 4 dấu cách) cho tệp package.json?

Tôi không thể tìm thấy bất kỳ thứ gì trong số npm options documentation.

Trả lời

10

Sau khi đào qua npm source, rất tiếc là câu trả lời cho câu hỏi của tôi chắc chắn là "không". Khi npm install được thực hiện với một trong những "tiết kiệm" tùy chọn, các following happens:

fs.readFile(saveTarget, function (er, data) { 
    try { 
    data = JSON.parse(data.toString("utf8")) 
    } catch (ex) { 
    er = ex 
    } 
    // ... 
    data = JSON.stringify(data, null, 2) + "\n" 
    fs.writeFile(saveTarget, data, function (er) { 
    cb(er, installed, tree, pretty) 
    }) 
}) 

Điểm mấu quan trọng là các cuộc gọi đến JSON.stringify. Khi gọi stringify với đối số thứ ba, chuỗi thụt đầu dòng được trả về được định dạng với số lượng khoảng trống được chỉ định.

Vì không có cách nào để tùy chỉnh giá trị được sử dụng bởi npm nội bộ, hành vi này hiện không thể định cấu hình được.

+4

Npm không chấp nhận yêu cầu kéo. Thật tuyệt vời khi có thể cắm trình định dạng cho tất cả các lệnh npm viết 'package.json', vì vậy chúng tôi có thể chọn, nói,' require ('format-json'). Diffy' thay vì dòng của nó bộ mã hóa cứng. – ecmanaut

+0

@ecmanaut - Đã có PRs cố gắng khắc phục vấn đề này chưa? –

+0

IIRC, tôi đã thăm dò xem liệu một người có được chấp nhận hay không, và có một công ty không, và để nó ở đó. (Vì vậy: không phải từ tôi, nhưng có lẽ từ những người khác.) – ecmanaut