В моем шлюзе API есть 2 ресурса: app
и user
, оба из которых имеют настройку CRUD API.И все API обслуживаются из Lambda.
Текущая структура папок исходного кода:
root
- Lambda
-- app
--- GET.app.lambda.js
--- PUT.app.lambda.js
--- DELETE.app.lambda.js
-- user
--- GET.user.lambda.js
--- PUT.user.lambda.js
--- DELETE.user.lambda.js
- shared
-- model
--- user.model.js
--- app.model.js
. DynamoDB обновляется с использованием user
и app
модели из /shared/model/user.model.js
.и /shared/model/app.model.js
Я хочу создать отдельный zip-файл для каждого лямбда-файла.например, dist-zip/GET.app.lambda.zip
, dist-zip/PUT.app.lambda.zip
и т. д. Таким образом, содержимое zip-файла будет
GET.app.lambda.js
/shared/model/user.model.js
Еще одно решение, о котором я подумал, - создать файл 1 js, который использует синтаксис nodejs 8.10, а не es5.Но не смог этого достичь.
Проблема, с которой я сталкиваюсь, заключается в том, что файл модели и файл lambda.js копируются в одну папку dist
.Также импорт ~/shared/model/user.model.js
становится ../../shared/model/user.model.js
в dist/GET.app.lambda.js
файле.
Ниже приведен мой файл gulp для создания dist-zip для пользовательского API GET.
var gulp = require('gulp');
var babel = require('gulp-babel');
var zip = require('gulp-zip');
var browserify = require('gulp-browserify')
gulp.task('copy-to-dist', function () {
return gulp.src([
'shared/model/user.model.js',
'Lambda/user/GET.user.lambda.js'
])
.pipe(
babel({
"presets": [
["env", {
"targets": {
"node": "8.10"
}
}]
],
plugins: [
'babel-plugin-root-import',
]
})
).pipe(gulp.dest('./dist'))
});
gulp.task('zip', function () {
return gulp.src(['dist/**/*', 'dist/.*'])
.pipe(zip('dist.zip'))
.pipe(gulp.dest('dist-zip/'));
});
gulp.task('build', gulp.series(['copy-to-dist', 'zip']));
Пожалуйста, дайте мнезнать, как настроить gulp для создания js-файла, совместимого с 1 nodejs 8.10, или решить проблему с путём импорта в файлах dist.