我如何为每个项目在本地安装 npm 模块到 vendor/node_modules
并让 package.json
文件看到它们。
我不想将 package.json 移动到 vendor 文件夹
我有 Bower,在 .bowerrc
中我指定了 bower_components
路径 - 这非常简单。
我如何使用 npm 做到这一点?
我已经阅读了文档、npmrc 文档,这里有一些问题,用谷歌搜索,浪费了一个多小时——仍然没有运气。对于如此简单的任务来说,这太难了。
我不关心缺点,只要告诉我最后怎么做。
最佳答案
似乎没有内置方法可以安装到任意子文件夹中的 node_modules
文件夹,这让我很沮丧,我想出了一个使用以下两个脚本的偷偷摸摸的解决方案:
preinstall.js
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){}
您需要做的就是在 package.json
文件中使用它们,方法是将它们添加到 scripts
选项中:
"scripts": {
"preinstall": "node preinstall.js",
"postinstall": "node postinstall.js"
},
所以,最大的问题是:它有什么作用?
好吧,当您调用
npm install
时,preinstall.js
脚本会触发,它会在您想要的子文件夹中创建一个node_modules
。然后它从npm
期望的node_modules
到真正的创建一个
.symlink
或(Windows 中的shortcut
) >node_modules然后
npm
安装所有依赖项。最后,一旦安装了所有依赖项,
postinstall.js
脚本就会触发,它会删除symlink
!
这是一个方便的 gist有你需要的一切。
关于node.js - 将 node_modules 安装到 vendor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27764704/