【问题标题】:npm 2nd level dependency need to get 1st level dependency package.json (npm submodule dependency management)npm 2级依赖需要获取1级依赖package.json(npm子模块依赖管理)
【发布时间】:2017-02-02 07:25:00
【问题描述】:

我正在尝试开发一个包以允许轻松导入预构建模块。 所以我要介绍的用例是项目 X 使用预构建模块 Y,因此我的模块可以通过 GitHub 版本轻松创建此预构建发行版。 所以我期待这样的依赖结构:

X
|-Y
  |-any-prebuilt

但我目前在使用

导入时处于我的最高级别
X
|-Y
|-any-prebuilt

所以 npm 和 yarn 似乎正在使结构变平,因为我可以在我预期的二级依赖项的安装后发现我的错误。

bash-3.2$ npm install

> any-prebuilt@0.0.3 postinstall /Users/me/workspace/<X>/node_modules/any-prebuilt
> node install.js

Fetching prebuilt:
 version: latest

Platform: osx
Arch: x64
Target dir: ./bin
required user & repo

在这种情况下,我有 2 个问题,我在这里缺少什么?并且我的any-prebuilt 是否可以得到Ypackage.json

https://github.com/kanekotic/any-prebuilt

【问题讨论】:

    标签: node.js npm node-modules


    【解决方案1】:

    所以我想我现在可以回答我自己的问题了。由于 npm 版本 3,默认情况下结构是扁平的(yarn 也是如此),在依赖冲突的情况下它只是非扁平的。

    因此,对于最终来到这里的人(如果有的话),如果您是最终项目,则有 2 个选项可以在运行 npm install 时使用标志。

    npm install --legacy-bundling
    

    在我的情况下,这是不可能的,所以我不得不修改我的代码以使其更加面向 API。所以使用我的库的预构建包实际上必须提供信息。

    我已通过上一级的安装后事件。所以 basicelle 在Y 中声明一个postbuild.js 文件:

    require('any-prebuilt').install(require('./package.json').prebuilt)
    

    所以最后的建议不要添加需要升级信息的脚本。

    参考资料:

    https://codingwithspike.wordpress.com/2016/01/21/dealing-with-the-deprecation-of-peerdependencies-in-npm-3/

    https://docs.npmjs.com/cli/install

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-06
      • 2012-03-29
      • 2017-12-30
      • 1970-01-01
      • 1970-01-01
      • 2017-10-04
      • 2020-04-30
      相关资源
      最近更新 更多