在以 Serverless 为代表的无服务器计算时代中,Node.js 已经成为了构建函数式服务的主流语言。但是,在实际应用中,使用 Node.js 组织和管理无服务器函数的代码也面临一些挑战。这时候,npm 包 node_serverless_bundler 在无服务器场景中发挥了不可替代的作用。
它可以将多个 .js 文件打包成一个文件,消除了开发者构建和部署代码的一些麻烦。本文将向大家介绍 node_serverless_bundler 的使用方法,以及一些注意点。
安装
node_serverless_bundler 可以通过 npm 安装,使用以下命令即可:
npm install -g node_serverless_bundler
打包
node_serverless_bundler 通过指定入口文件和依赖,打包生成一个文件。实现该功能需要先在项目根目录下创建一个入口文件 index.js,然后在 package.json 文件里添加如下配置:
"bundler": { "entry": "./index.js", "exclude": [ "aws-sdk", ], "output": "./dist/index.js", "runtime": "nodejs10.x" }
其中:
entry
是入口文件路径,即我们需要打包的入口文件;exclude
是需要从打包的文件中排除的依赖,常见的 SDK 如 aws-sdk 就是需要排除的。如果有其他需要排除的依赖,可以按照此格式在数组中加入;output
是打包后生成的文件路径;runtime
是指定 AWS Lambda 执行环境的版本,如 nodejs10.x、nodejs12.x 等。这里值得一提的是,AWS 对 nodejs 的支持一般都是滞后的,最稳定的版本是 nodejs10.x,其他版本可能有不兼容错误。
上面的配置在准备好后,就可以通过以下命令进行打包:
node_bundler
打包好的代码会输出到 dist 目录下。可以看到,该命令的执行需要在项目根目录下,也就是 package.json 文件所在的目录下。
示例代码
下面为大家提供一段简单的示例代码,用来说明如何使用打包好的文件:
-- -------------------- ---- ------- ----- --- - ------------------- ----- ------ - --- ------------- --------------- - ----- ------- -------- -- - ----- ------ - - ------------- ------------------ --------------- ------------------ -------- --------------------- -- ----- ------ - ----- -------------------------------- ------ - ----------- ---- ----- -------------- -- --
从上面的代码可以看到,打包后的文件内容会暴露一个 handler 函数,函数的第一个参数是 event,第二个参数是 context。
注意点
- 打包文件的入口 JS 文件建议只暴露一个函数(例如 handler 函数);
- 不要尝试将 AWS SDK 等广泛使用的依赖打包到生成的文件中,否则将会增加文件大小;
- 注意 runtime 版本的选择,不同版本可能会存在兼容性问题;
- 在打包好代码后,我们需要将其上传到相应的服务中,并在其中调用 handler 函数。
结语
node_serverless_bundler 可以帮助我们更好地组织和管理无服务器函数的代码,消除了构建和部署过程中的一些麻烦。上面我们介绍了该包的基本使用方法以及注意点,并给出了一段示例代码。希望对大家有所帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6005668981e8991b448e2c4a