我们正在开发 project/framework这有助于在 AWS Lambda 中部署和维护代码。我想将 lambda 函数的所有 node.js 代码构建/捆绑到一个 js 文件中,因为:
我们不想创建自定义捆绑器来执行此操作,因为已经有很多选项(systemjs、browserify、webpack 等)。然而,我们担心一些节点模块不能很好地与捆绑器/构建器一起使用的问题。
具体
aws-sdk
有 known issues with webpack , 说它有 browserify support但我已经和那些对浏览器化 aws-sdk 有问题的人谈过我们想选择一个现有的捆绑器(或 2 个),但我们想确保它适用于尽可能多的模块/代码。我们正在尝试为 JAWS 创建一个插件生态系统,因此正确处理这一点很重要(不想让人们关闭,因为他们使用的模块 X 不会捆绑)。
问题:
最佳答案
我不喜欢使用单文件解决方案,而是上传打包了所有代码的 zip 文件。我为此使用 gulp。以下代码仅上传生产依赖项,不包括开发依赖项和之前上传的 zip 存档。您也可以使用 gulp.src
的参数排除您的测试文件夹或任何其他文件.
顺便提一下,aws-sdk
库在我的开发依赖项中,因为 AWS Lambda 已经有一个副本;)
var gulp = require('gulp');
var lambda = require('gulp-awslambda');
var zip = require('gulp-zip');
var settings = require('./settings');
var argv = require('yargs').argv;
var p = require('./package.json');
gulp.task('default', function () {
var profile = argv.profile;
var src = ['**', '!*.zip', '!node_modules/aws-sdk{,/**}'];
var i;
for (i in p.devDependencies) {
src.push("!node_modules/" + i + "{,/**}");
}
if (!profile) {
profile = settings.aws.defaultProfile;
}
return gulp.src(src)
.pipe(zip('archive.zip'))
.pipe(lambda(settings.aws.lambda, {
region: settings.aws.region,
profile: profile
}))
.pipe(gulp.dest('.'));
});
关于javascript - 如何为 AWS Lambda nodejs 运行时构建单个 js 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32253362/