gpt4 book ai didi

node.js - 将 node_modules 安装到 vendor

转载 作者:搜寻专家 更新时间:2023-10-31 22:19:03 24 4
gpt4 key购买 nike

我如何为每个项目在本地安装 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"
},

所以,最大的问题是:它有什么作用?

  1. 好吧,当您调用 npm install 时,preinstall.js 脚本会触发,它会在您想要的子文件夹中创建一个 node_modules。然后它从 npm 期望的 node_modules 到真正的 创建一个 symlink 或(Windows 中的 shortcut) >node_modules.

  2. 然后 npm 安装所有依赖项。

  3. 最后,一旦安装了所有依赖项,postinstall.js 脚本就会触发,它会删除 symlink!

这是一个方便的 gist有你需要的一切。

关于node.js - 将 node_modules 安装到 vendor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27764704/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com