2015-01-24 3 views
2

간단한 빌드 (this article에서 영감을 얻음)에 npm을 사용하고 싶습니다. 내가 필요를 통해 노드 모듈 (markdown-pdf)에 따라 내 package.json에 하나, 한 줄 script이 (안 바이너리로합니다.)npm 스크립트를 실행하기 전에 종속성을로드하는 방법은 무엇입니까?

내 테스트 설정은 하나의 package.json 파일의 최신 버전이 포함 된 프로젝트 디렉토리입니다 npmnode :

{ 
    "name": "mytest", 
    "version": "0.0.1", 
    "devDependencies": { 
    "markdown-pdf": "latest" 
    }, 
    "scripts": { 
    "test": "node -e \"require('markdown-pdf');\"" 
    } 
} 

npm test 실패로 인해 일 : 여기

$ echo "npm: $(npm -v), node: $(node -v)" 
npm: 1.4.28, node: v0.10.35 
$ ls -a 
./   ../   package.json 

package.json입니다

$ npm test 

> [email protected] test /Users/me/mytest 
> node -e "require('markdown-pdf');" 


module.js:340 
    throw err; 
     ^
Error: Cannot find module 'markdown-pdf' 
    at Function.Module._resolveFilename (module.js:338:15) 
    at Function.Module._load (module.js:280:25) 
    at Module.require (module.js:364:17) 
    at require (module.js:380:17) 
    at [eval]:1:1 
    at Object.<anonymous> ([eval]-wrapper:6:22) 
    at Module._compile (module.js:456:26) 
    at evalScript (node.js:559:25) 
    at startup (node.js:80:7) 
    at node.js:929:3 
npm ERR! Test failed. See above for more details. 
npm ERR! not ok code 0 

이 가능 의존성이 하나의 package.json 파일에 자바 스크립트 스크립트를 사용할 수 원인이 다음 test 스크립트가 실행되기 전에 전자 필요한 모듈이 설치되지 않는 이유는 무엇입니까?

+0

로컬로 실행 중이십니까? 아니면 CI 서버에서 실행 중이십니까? –

답변

4

이 아마 방식 NPM이 사용되는 것을 의미 한 것이 아니라,이

{ 
    "name": "mytest", 
    "version": "0.0.1", 
    "devDependencies": { 
    "markdown-pdf": "latest" 
    }, 
    "scripts": { 
    "pretest": "npm install", 
    "test": "node -e \"require('markdown-pdf');\"" 
    } 
} 

npm test 실행 작동합니다 자동으로 첫 번째 pretest 실행됩니다. Source

+1

정답입니다. 각각의 테스트를하기 전에'npm install'을 실행해야한다면 아마 뭔가 잘못하고있을 것입니다. 이 패키지가 NPM을 통해 설치되지 않고 git을 통해 복제되는 경우'git clone '다음에 즉시 실행되는'git post-checkout hook'을 설정할 수 있습니다. 참조 : https://git-scm.com/docs/githooks –

1

자동으로 아니요, 아니요. 모듈과 함께 devDependencies 모듈을 번들로 제공하지 않는 한 devDependencies에 모듈을 설치하려면 먼저 npm install .을 수행해야합니다.

1

그것은 사용하는 npm가 의미하는 방법의 남용 될 수있다, 그러나이 package.json이 작업을 수행합니다

{ 
    "name": "mytest", 
    "version": "0.0.1", 
    "devDependencies": { 
    "markdown-pdf": "latest" 
    }, 
    "scripts": { 
    "test": "npm install && node -e \"require('markdown-pdf');\"" 
    } 
} 

매우 간단합니다.

+0

Eww,'npm이 사용되는 방법에 대한 학대 '가 옳다. –

관련 문제