【问题标题】:NPM does not publish dependenciesNPM 不发布依赖项
【发布时间】:2015-09-21 19:12:03
【问题描述】:

我一直在玩弄 Node 和 npm 包作为 CLI 应用程序。我有一个带有 package.json 的项目,都正确填写。当我通过 WebStorm 使用不同的参数运行应用程序时,一切正常。但是,如果我发布 npm 包……没有依赖项……npm 站点找不到……当我安装 CLI 应用程序时,它运行失败,因为是的……没有引入依赖项...

这是我的 package.json

 {
  "name": "wmg",
  "version": "0.0.8",
  "description": "A Commandline Foolin around",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "repository": {
    "type": "git",
    "url": "https://github.com/Arvraepe/wmg.git"
  },
  "keywords": ["Stuff", "Foolin"],
  "target": "main",
  "preferGlobal": true,
  "bin": {
    "wmg": "wmg.js"
  },
  "author": "Arne Van Raepenbusch <arvraepe@gmail.com>",
  "license": "ISC",
  "devDependencies": {
    "prompt": "^0.2.14",
    "restify": "^3.0.3",
    "underscore": "^1.8.3"
  }
}

我尝试运行 pakmanager deps,但这给了我这个奇怪的错误

======================= WARNING =======================
Assuming browser mode by default is deprecated.
  Include browserDependencies in your package.json
  -- OR --
  pakmanager -e browser build

In the next release of pakmanager, the node environment will be assumed as default
=======================================================


Targeted Environment: browser
[[[deps]]]
[ERROR] The following packages are `require`d, but not in the package, nor on npm:
  wmg
pakmanager {}


======================= WARNING =======================
Assuming browser mode by default is deprecated.
  Include browserDependencies in your package.json
  -- OR --
  pakmanager -e browser build

In the next release of pakmanager, the node environment will be assumed as default
=======================================================

我的包肯定不应该依赖于它自己吗?

有人能解释一下吗?

【问题讨论】:

  • 建议: 1) 分而治之:尝试不同的 minimal package.json,看看您是否可以隔离问题。 2) 查看here 以了解版本语法可能存在的问题。 3) 查看here 以了解“依赖项”与“devDependencies”可能存在的问题。祝你好运 - 请发回你找到的东西!

标签: json node.js npm command-line-interface


【解决方案1】:

您的 package.json 文件不包含依赖项。只有 npm 假定的 devDependencies 仅用于开发(例如 mocha)并且不需要安装。

如果您的任何 devDependencies 是实际的用户依赖项,请将它们移至依赖项。

【讨论】:

  • 你是对的!但是,我无法将两个答案设置为固定...谢谢您的宝贵时间!
【解决方案2】:

我查看了您的包裹,正如其他人所指出的,您列出了devDependencies,但没有列出dependencies。通常devDependencies 用于测试框架之类的东西,您需要处理包而不是使用它。 promptrestify 都在您的应用中使用,并且应列在 dependencies 对象中,而不是 devDependencies

【讨论】:

  • 这可能是因为我使用了 NPM 安装提示 --save-dev 例如...?当我查看节点包时,他们都将 --save-dev 放在最后以将其保存在您的包文件中......我认为这已经足够好了。不过你说的很有道理。
  • @Arninja:对于实际依赖项,使用 --save 而不是 --save-dev
  • 我现在想通了。很明显,它变得令人尴尬;-)但一切都很好。感谢所有帮助、信息和提示!
  • 我的 package.json 有“依赖项”而不是“devDependencies”,我得到了这个确切的错误:/
猜你喜欢
  • 2018-06-02
  • 1970-01-01
  • 2019-05-19
  • 2019-05-31
  • 2015-01-28
  • 2016-02-18
  • 2020-01-16
  • 1970-01-01
  • 2020-02-24
相关资源
最近更新 更多