问题描述
我是网络开发的初学者。这两个让我很困惑。如果他们都在 localhost 中打开一个页面,那么为什么我需要安装 http-server 而不是仅使用 npm start?
解决方法
npm start
运行 package.json 中“start”脚本中指定的任何命令。来自 npm 文档:
这会运行在包的“scripts”对象的“start”属性中指定的任意命令。如果在“scripts”对象上没有指定“start”属性,它将运行节点server.js。
https://docs.npmjs.com/cli/v6/commands/npm-start
因此,如果您的 package.json
包含以下内容:
{
"scripts": {
"start": "echo Hello"
}
}
然后运行 npm start
将打印“Hello”。 npm start
脚本本身不是可执行文件;它只运行 package.json 中指定的任何内容。
http-server
另一方面是启动 HTTP 服务器的特定可执行文件。它可能指的是 http-server npm 包,或命令行界面中可用的具有该名称的其他脚本。
npm start
是其他工具经常使用的约定,例如测试或持续集成,以“启动”您的应用程序,无论它使用什么技术。一个常见的设置是在“启动”脚本中指定特定的启动脚本:
{
"scripts": {
"start": "http-server"
}
}
虽然这使得 npm start
和 http-server
在您的项目目录中做同样的事情,但其他工具将依赖于 npm start
,否则他们不会知道您想要使用 {{ 1}} 作为您的启动脚本。
http-server
是用 JavaScript 为 Node.js 编写的 HTTP 服务器。
npm start
运行 http-server
中指定的 start
脚本。它可能运行网络服务器(可能使用 package.json
编写)并打开浏览器访问它。它可能会做别的事情。它完全可以配置。