create-react-app 中的“npm run build”是什么?

IT技术 javascript node.js reactjs npm create-react-app
2021-05-24 00:20:09

我找不到关于“npm run build”工作的任何解释,

它简单易用,我得到了很好用的“build”文件夹,

但是,在 create-react-app 中,幕后到底发生了什么?

它是构建工具的完全不同的用途吗?

如果没有,它是否使用其他构建工具?

2个回答

开发人员经常将 JavaScript 和 CSS 分解为单独的文件。单独的文件让您可以专注于编写更多module化的代码块来完成一件事情。做一件事的文件会减少您的认知负担,因为维护它们是一项非常繁琐的任务。

幕后究竟发生了什么?

当需要将您的应用程序移至生产环境时,拥有多个 JavaScript 或 CSS 文件并不理想。当用户访问您的站点时,您的每个文件都需要一个额外的 HTTP 请求,从而使您的站点加载速度变慢。因此,为了解决这个问题,您可以创建我们的应用程序“构建”,它将您所有的 CSS 文件合并到一个文件中,并对您的 JavaScript 执行相同的操作。这样,您可以最大限度地减少用户获取的文件数量和大小。要创建此“构建”,您需要使用“构建工具”因此使用npm run build.

正如您正确提到的,运行命令 ( npm run build) 会为您创建一个build目录。现在假设你的应用中有一堆 CSS 和 JS 文件:

css/
  mpp.css
  design.css
  visuals.css
  ...
js/
  service.js
  validator.js
  container.js
  ...

运行后,您npm run buildbuild目录将是:

build/
  static/
    css/
      main.css
    js/
      main.js

现在您的应用程序的文件很少。该应用程序仍然相同,但被压缩为一个名为build.

最终结论: 您可能想知道为什么构建是值得的,如果它所做的只是为您的用户节省几毫秒的加载时间。好吧,如果您只是为自己或其他几个人制作网站,则不必为此烦恼。只有高流量站点(或您希望很快成为高流量的站点)才需要生成项目的构建版本。

如果您只是在学习开发,或者只制作流量非常低的网站,那么生成构建可能不值得您花时间。

这里简单解释一下:https : //github.com/facebookincubator/create-react-app#npm-run-build-or-yarn-build

它在生产模式下正确地捆绑了 React 并优化了构建以获得最佳性能。

构建被缩小,文件名包括哈希值。

在幕后,它使用babel 来转译您的代码,并使用 webpack 作为构建工具来捆绑您的应用程序。