, 나는 다음 두 스크립트를 사용하여 비열한 솔루션을 함께했다
var fs = require("fs");
try
{
fs.mkdirSync("./app/node_modules/");
}
catch(e)
{
}
try
{
if(process.platform.indexOf("win32") !== -1)
{
fs.symlinkSync("./app/node_modules/","./node_modules/","junction");
}
else
{
fs.symlinkSync("./app/node_modules/","./node_modules","dir");
}
}
catch(e){}
postinstall.js
var fs = require("fs");
try
{
if(process.platform.indexOf("win32") !== -1)
{
fs.unlinkSync("./node_modules/");
}
else
{
fs.unlinkSync("./node_modules");
}
}
catch(e){}
당신이 scripts
옵션에 추가하여 package.json
파일에서 사용하기 만 :
"scripts": {
"preinstall": "node preinstall.js",
"postinstall": "node postinstall.js"
},
그래서 큰 질문은 : 그것은 무엇을합니까?
글쎄, 당신은 당신이 원하는 하위 폴더에 node_modules
를 생성 npm install
preinstall.js
스크립트 화재를 호출합니다. 그런 다음 node_modules
에서 또는 shortcut
을 생성합니다 (npm
은 node_modules
입니다).
그런 다음 npm
은 모든 종속성을 설치합니다.
마지막으로 일단 모든 종속성이 설치되면 을 제거하는 postinstall.js
스크립트가 실행됩니다!
필요한 모든 기능을 갖춘 편리한 gist입니다.
** 당신은 할 수 없습니다 ** 'npm' 여기에 설명 된 패키지를 찾는 노드의 알고리즘을 사용합니다. 당신은 수정해야 할 것입니다 귀하의 'node' 바이너리를 지원하기 위해 "vendor/node_modules" –
사실입니다,하지만 npm은 커스텀 디렉토리에 설치되지 않습니다. 노드가 다양한 node_modules 위치를 걷기 전에 사용할 경로를 제공 할 수는 있지만 npm은 node_modules를 설치하지 않습니다. 따라서 npm을 사용하지 않고 기술적으로 노드 프로젝트를 작성할 수는 있지만 모든 요구에 대해 모든 경로를 하드 코딩해야합니다. –