cross-env
是一个运行在 Node.js 环境中的工具包,它的次要作用是让咱们能够在命令行中设置环境变量,而不用放心跨操作系统的兼容问题。在 Unix 和 Windows 零碎中设置环境变量的形式是不同的,这就导致了咱们无奈写出一条在所有操作系统中都能够运行的设置环境变量的命令。cross-env
的呈现就是为了解决这个问题。
以一个十分常见的场景为例,让咱们来看一下在没有应用 cross-env
的状况下,如何在不同的操作系统中设置环境变量。在 Unix 零碎中,咱们通常会这样做:
NODE_ENV=production node app.js
而在 Windows 零碎中,咱们须要这样做:
set NODE_ENV=production&&node app.js
这样的差别使得咱们在编写跨平台脚本时遇到了艰难,因为咱们无奈保障所有的开发者和用户都在应用同一种操作系统。
这时,cross-env
就派上了用场。应用 cross-env
,咱们能够这样设置环境变量:
cross-env NODE_ENV=production node app.js
这条命令无论在 Unix 还是在 Windows 零碎中,都能正确地设置 NODE_ENV
环境变量为 production
。
cross-env
的工作原理是它在外部对操作系统进行了查看,并依据操作系统的类型来决定如何设置环境变量。这样,开发者就无需放心操作系统的差别,只须要专一于他们的利用程序代码。
cross-env
是一个十分玲珑的工具包,但它解决了一个十分理论的问题。在理论开发中,开发者常常须要依据环境变量来扭转他们的应用程序的行为。比方,在开发环境中,开发者可能心愿关上一些调试日志,而在生产环境中,他们可能心愿敞开这些日志。通过设置环境变量,开发者能够在不扭转代码的状况下,实现这种行为的切换。
不仅如此,环境变量还经常被用来存储敏感信息,如数据库明码、API 密钥等。这些信息不应该被硬编码在代码中,而是应该存储在环境变量中,以减少应用程序的安全性。
在应用 cross-env
时,咱们通常会在 package.json
文件的 scripts
字段中应用它,像上面这样:
"scripts": {"start": "cross-env NODE_ENV=production node app.js"}
而后,咱们就能够通过运行 npm start
来启动咱们的应用程序,而 NODE_ENV
环境变量会被设置为 production
。