2013-05-18 5 views
1

첫 번째 모듈을 NPM에 게시하려고합니다. EJS 템플릿으로 markdown을 렌더링하고, 두 개의 다른 npm 모듈을 사용하고 ejs를 사용합니다.이 파일은 package.json 파일에 종속되어 있습니다. 내 node_modules 디렉토리가 포함 된 .gitignore 파일과 비어있는 .npmignore 파일이 있습니다.NPM에 게시 할 때 다른 NPM 모듈을 포함하는 방법은 무엇입니까?

성공적으로 npm에 게시했습니다.

그러나 나는 테스트 응용 프로그램의 package.json로 퍼팅하고 설치 npm install -d을 수행하여 내 모듈을 설치하려고 할 때,하지만에 나는 테스트 응용 프로그램 루트 node_modules 디렉토리에 가면, 그 종속성을 설치하지 않고 내 새로 게시 된 모듈의 설치된 디렉토리에 의존성을 설치하지 않았으므로 중첩 된 node_modules 디렉토리가 없습니다.

내 모듈의 종속성을 올바르게 설치하려면 종속성으로 익스프레스를 포함 시키면 connect 및 다른 모듈이 설치된 자체 node_modules 폴더가 설치되고 다른 두 모듈과 동일한 작업을 수행해야합니다. npm 모듈.

중첩 된 node_modules 종속성을 설치하면 제대로 작동한다는 것을 알고 있습니다.

$ npm install -d 
$ cd node_modules/my_module 
$ npm install -d 
$ cd ../.. 
$ node app 

편집

: 여기 내 모듈의 GitHub repo에 대한 링크이며, 여기에 package.json입니다.

편집 : 참고, 이것은 단지 내 종속성을했을 때 이미 내 테스트 응용 프로그램에 설치 및 EJS을 표시 발생했다. 모듈을 설치 한 후에는 자체의 node_modules 디렉토리에 표시된 및 ejs를 설치하지 않았습니다. 그러나 테스트 응용 프로그램에서 모든 모듈을 제거하고 내 모듈 만 설치하면 모듈이 설치됩니다. 내 의존성이 미리 설치되었는지 여부에 관계없이 작동하도록하려면 어쨌든 존재합니까?

+0

'package.json' 콘텐츠를 게시 할 수 있습니까? –

+0

@AlbertoZaccagni @AlbertoZaccagni 추가 된 링크 –

+2

방금 ​​패키지를 설치하고 모든 deps를 설치했습니다 ... npm 1.2.18 및 노드 v0.10.6 –

답변

1

모든 것이 "그대로 작동"해야합니다.

npm은 이미 상위 모듈의 node_modules 디렉토리에 적절한 모듈이 있으므로 새로운 모듈을 설치하지 않습니다. 노드의 require이 트리를 검색하여 각 디렉토리에 대해 node_modules subdir을 시도하면 자신의 node_modules 디렉토리가 없어도 모듈의 require 문이 작동합니다.

올바른 종속성이 이미 설치되어 있지 않은 장소에 모듈을 설치하면 해당 모듈 자체의 node_modules 디렉토리 아래에 모듈이 설치됩니다. 알베르토가 이것을 확인합니다.

package.json에서 좀 더 구체적인 버전의 종속성을 지정할 수 있습니다. 이렇게하면 모듈이 테스트 한 종속성의 버전을 사용할 수 있습니다.

+0

이것을 읽은 후, 나는 더 많은 것을 망쳐 놓고, 모든 의존성을 다시 제거하고, 설치했다. 전에 무엇이 잘못되었는지 확신하지 못했습니다. 모듈을 요구할 수 없었습니다. –

관련 문제