gpt4 book ai didi

node.js - Node 本地依赖项安装为快捷方式并嵌套而不是平面

转载 作者:太空宇宙 更新时间:2023-11-03 22:25:26 24 4
gpt4 key购买 nike

这似乎是在我更新node/npm时开始的,但直到现在我才意识到我必须删除并重新创建我的node_modules文件夹。

我有一个 React Native 项目,其中包含核心模块和一个用于展示该模块的示例项目。示例项目在我的 package.json 中引用了这样的模块:

  "dependencies": {
"module-core": "file:../core"
},

当我在示例项目中运行 npm install 时,我得到了这个 nodule_module 结构:

  • Node 模块
    • 核心
    • core_dependency_1
    • core_dependency_2

现在,我明白了:

  • Node 模块
    • 核心
      • Node 模块
        • core_dependency_1
        • core_dependency_2

起初我认为这与 PeerDepcies 以及 npm 如何处理平面/嵌套依赖项有关,但我检查过,现在看来核心文件夹现在是一个快捷方式(我使用的是 Windows)。

这破坏了我的 gradle 脚本,因为有些脚本是这样引用的:

apply from: "../../node_modules/react-native-vector-icons/fonts.gradle"

我可以通过重命名链接来解决这个问题,但这会使构建平台/环境依赖。

它还破坏了其他一些脚本,例如:

apply from: project(':react-native-config').projectDir.getPath() + "/dotenv.gradle"

那是因为 project() 解析到我的根文件夹,现在我也无法使用它。

我正在使用 npm 5.4.2 和 Node 8.8.1。以前我有 Node 7.4.0。

是否有任何标志或方法可以让 npm 安装 localDependency 并且不将其视为快捷方式?

最佳答案

我终于找到答案了。 Npm 版本 5 确实改变了本地依赖项的处理方式,它只是创建了 npm link,在 Windows 中创建符号链接(symbolic link)或快捷方式。

您可以通过以下方式完成与以前相同的行为:

npm install $(npm pack <folder> | tail -1)

在 Windows 10 中使用 git-bash 为我工作

我的最终解决方案是在使用核心的示例项目中包含此 package.json:

{
"name": "core-examples",
"version": "0.0.0",
"private": true,
"scripts": {
"start": "node node_modules/react-native/local-cli/cli.js start",
"preinstall": "npm pack ../Core | tail -1",
},
"dependencies": {
"core": "file:core-0.0.0.tgz"
},
"jest": {
"preset": "react-native"
}
}

预安装脚本将生成 tgz 文件,然后您可以照常安装。这将避免必须将 tgz 文件提交到存储库。

关于node.js - Node 本地依赖项安装为快捷方式并嵌套而不是平面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47420244/

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