【问题标题】:devDependencies ignored in npm?在 npm 中忽略了 devDependencies?
【发布时间】:2015-05-10 03:56:14
【问题描述】:

我是两个 npm 模块的作者,都具有 devDependencies。 第一个是 simpleDbLayer。安装它:

npm install simpledblayer

下载的package.js 文件的devDependencies 与git repository 中的内容匹配:

//...
"devDependencies": {
  "simpleschema": "0.3.x"
},
//...

不幸的是,nodeunit test.js 将失败,因为没有安装 simpleschema(应该安装)。来自手册:

默认情况下,npm install 将安装所有列为依赖项的模块。使用 --production 标志,npm 将不会安装 devDependencies 中列出的模块

更奇怪(这是我最受其影响的真正奇怪的问题)是我的另一个模块 simpledblayer-mongo:

npm install simpledblayer-mongo

在他安装的package.js文件中,我有:

"devDependencies": {},

这与实际发布的内容不符,which contains

"devDependencies": {
  "simpleschema": "0.3.x",
  "simpleschema-mongo": "0.3.x"
},

simpleschema 不用说,simpleschema-mongo 没有安装。

我错过了什么吗?

【问题讨论】:

    标签: json node.js npm


    【解决方案1】:

    是的,默认情况下它将安装 devDependencies,但仅适用于您的项目(package.json 中的 devDependencies),而不适用于 npm 存储库中的模块。

    如果您想要依赖项的 devDependencies,请通过将 --dev 传递给 npm 命令来强制它:

    npm install simpledblayer --dev
    

    此外,当您将环境变量 NODE_ENV 设置为生产环境时,它也不会安装 devDependencies(甚至不会安装 package.json 中的那些)。

    【讨论】:

    • 我遇到的问题是 它没有为我自己的项目安装 devDependencies!我安装了simpledblayer,而simpledblayer的devDependencies没有安装...
    • 您可能是模块作者,但您是从 npm 存储库下载的。我所说的你的项目的意思是当你在你的代码已经存在的目录中发出npm install
    • 我很困惑。我的用例很简单:我在一个新的、原始的空主目录中。我运行npm install simpledblayer-mongo。然后我进入那个目录,运行npm test。测试失败是因为没有安装 simpledblayer-mongo 的 devDependencies。如果这个用例不起作用,那么真正起作用的用例是什么
    • 当您的代码已经在您的机器中,并且您只想安装它的依赖项时,您发出npm install(没有任何模块名称)。在这种情况下,devDependencies 也将被安装(你的 package.json 中的那些,而不是你依赖项的 package.json 中的那些)。
    • @Merc,正如 Victor 已经说过的,npm 不知道你是否是作者,如果你只是做npm install <package>。如果您需要处理其源代码,那么您应该使用npm install <package>,而应使用git clonecd <package> && npm install。不幸的是,我不认为npm install <package> 的行为被明确记录,而cd <package> && npm install 的行为在docs.npmjs.com/cli/install#description 被相当清楚地记录
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-21
    • 2020-03-04
    • 1970-01-01
    • 1970-01-01
    • 2020-06-15
    • 2016-04-14
    相关资源
    最近更新 更多