2013-09-02 5 views
13

당신이 NPM 패키지를 설치하고 적절한 종속성 속성에 package.json 파일로 패키지를 작성하는 --save, --save-dev 또는 --save-optional 옵션을 사용하면 전체 파일이이 공간 들여 쓰기를 다시 작성 나타납니다특정 package.json 형식을 따라 npm 설치를 수행 할 수 있습니까?

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

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

npm이 기존 형식을 따르도록하거나, package.json 파일의 사용자 지정 형식 (예 : 4- 공인 들여 쓰기)을 지정하는 방법이 있습니까?

npm options documentation에서 아무것도 찾을 수 없습니다.

답변

10

npm source을 파고 나면, 불행히도 내 질문에 대한 대답은 분명히 "아니오"로 나타납니다. npm install는 "저장"옵션 중 하나는 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) 
    }) 
}) 

중요한 라인은 JSON.stringify에 대한 호출입니다. 세 번째 인수로 stringify을 호출 할 때 반환 된 문자열 들여 쓰기는 지정된 공백 개수로 형식이 지정됩니다.

내부적으로 npm에서 사용하는 값을 사용자 정의 할 방법이 없기 때문에 현재이 동작은 구성 할 수 없습니다.

+4

Npm은 끌어 오기 요청을 수락합니다. 'package.json'을 쓰는 모든 npm 명령에 대해 포맷터를 연결할 수 있다면 좋을 것입니다. 그래서 우리는'require ('format-json') .diry를 현재의 것 대신에 고를 수 있습니다. 하드 코딩 된 문자열. – ecmanaut

+0

@ecmanaut -이 문제를 해결하려는 PR이 있습니까? –

+0

IIRC, 나는 받아 들여질 것인가에 대해 조사했고 확고한 no를 얻었고 그것을 남겼다. (그래서 : 나로부터 온 것이 아니라, 아마도 다른 사람들로부터 온 것입니다.) – ecmanaut

관련 문제