Package.json 生成 / npm 未使用的软件包

22

我正在项目中引入单元测试,所以需要制作一个package.json文件。

第一个问题是,你在使用哪个单元测试套件?我在寻找一个似乎非常适用于Node.js项目的套件,那就是mocha

第二个问题是:是否有任何神奇的方法可以生成package.json文件?(用于依赖和版本)

第三个问题是:在开发我的项目时,我测试了很多npm包,现在我卡在了许多可能没有用的包上。有没有办法告诉我哪些是无用的?(我看到了npm list installed,虽然有用)


2
http://npmjs.org/doc/init.html 可能是创建 npm 项目最简单的方式。我建议你阅读 http://npmjs.org/doc/json.html 并从经常使用和测试过的软件包(例如 express 或 npm 本身)中获取灵感。 - Manuel Leduc
你真的应该提出三个单独的问题。 - Domenic
1
哇!这么多好答案!非常感谢大家,这非常非常有帮助!请继续分享你们的见解! - Tommy B.
5个回答

35
  1. 我正在使用 Mocha。

  2. npm init 用于初始化一个新项目。

  3. 如果你运行 npm ls,那么在不在 package.json 中的包将会被标记为 "extraneous"。但是,看起来你还没有 package.json 文件。


基本上,你的工作流程很混乱。以下是正确的工作流程:

  1. 使用 npm init 创建一个新项目,该项目没有任何依赖项。
  2. 如果想要使用一个包,比如说 express,将其添加到 package.json 的 dependencies 中,然后运行 npm install
  3. 如果想要使用开发包,例如 mocha,将其添加到 package.json 的 devDependencies 中,然后运行 npm install

你好像已经手动安装了一些包(通过 npm install <packageName>),这样会很混乱。我建议重新开始,并按照上述工作流程进行操作。


当你说这是反向的时候,你是完全正确的。本来这只是一个小测试项目,但结果比我预期的要大得多,也不仅仅是为了测试而已呵呵。谢谢你的回答! - Tommy B.
9
你也可以运行 npm install <packageName> --save 命令,这将自动将其添加到你的 package.json 文件中。更多细节请参见:https://npmjs.org/doc/install.html。我发现这比 Domenic 在上面建议的流程更容易。 - stephenbez
3
还有 --save-dev 用于 devDependencies (在提到的链接文档中有说明)。 - chakrit

21
回答第三个问题:
运行npm prune命令将删除在你的package.json文件中未被引用的所有已安装模块。
而且,你真的应该提出3个单独的问题。

6
  1. 我也使用Mocha。它具有代码覆盖率、BDD、TDD,并且可以在浏览器中运行。它非常完整,由我认为是最杰出的javascript / node.js程序员之一的TJ进行了大量维护。

  2. 很难猜测要使用哪个版本,因为npm不知道哪个版本会破坏哪些依赖项。您可能可以使用类似node-detective的工具安装所有依赖项。然后,您可以在javascript中使用npm.js来安装它们。也许将来我会考虑解决这个问题。

  3. 我还可能删除所有依赖项,然后使用步骤(2)重新安装所需的依赖项。但是,随着当前硬盘的容量越来越大,磁盘空间已经不再是一个大问题。

附言:我认为我也同意Domenic的看法。


3
  1. 我使用的是vows。它很好,但不完美。我发现在node中进行单元测试通常会因为与数据库等异步回调而具有挑战性,并且大多数情况下只测试顶层功能。

  2. 这里是你的魔法:使用Shrinkwrap管理Node.js依赖关系

  3. 唯一知道你正在使用哪些软件包的方法就是知道。你无法通过程序生成这个。我的建议是积极删除软件包,然后重新测试所有功能 - 如果出现故障,您将知道需要重新安装其中一个软件包。


2

回答你的第三个问题,你可以使用Sweeper来列出未使用的依赖项,并从你的package.json中删除它们。只需在命令行上运行npm install -g sweeper,然后在你的项目目录中调用sweeper即可。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接