#node.js #amazon-web-services #webpack #serverless #serverless-webpack-plugin
#node.js #amazon-веб-сервисы #webpack #бессерверный #бессерверный webpack-плагин
Вопрос:
Я работаю над приложением узла с использованием serverless
архитектуры. Мы используем serverless-webpack
плагин для сборки приложения. Вот webpack.config.js
module.exports = {
mode: isLocal ? 'development' : 'production',
entry: slsw.lib.entries,
externals: [nodeExternals()],
devtool: 'inline-cheap-module-source-map',
resolve: {
extensions: ['.js', '.jsx', '.json', '.ts', '.tsx']
},
output: {
libraryTarget: 'commonjs2',
path: path.join(__dirname, '.webpack'),
filename: '[name].js'
},
optimization: {
minimize: true,
minimizer: [new TerserPlugin()],
},
target: 'node',
module: {
rules: [{
test: /.ts$/,
exclude: /node_modules/,
loader: 'ts-loader',
options: {
// disable type checker - we will use it in fork plugin
transpileOnly: true
}
},
{
test: /.(graphql|gql)$/,
exclude: /node_modules/,
loader: 'graphql-tag/loader',
}
]
},
// plugins: [new ForkTsCheckerWebpackPlugin()]
};
и вот serverless.yml
файл :
service: app
provider:
name: aws
region: ${env:AWS_REGION}
stage: ${env:STAGE}
logRetentionInDays: 90
role: ${env:ROLE}
versionFunctions: false
runtime: nodejs12.x
package:
individually: true
plugins:
- serverless-webpack
- serverless-offline
custom:
webpack:
webpackConfig: './webpack-gql.config.js'
packager: 'npm'
includeModules: true
functions:
######## GraphQl ###########
graphql:
role: ${env:ROLE}
runtime: nodejs12.x
timeout: 30
handler: aws/lambda/common/api/graphql.graphqlHandler
events:
- http:
path: graphql
method: post
- http:
path: graphql
method: get
Когда я запускаю sls deploy --config serverless.yml
развертывание приложения, все работает, и лямбда-модуль успешно развертывается.
Единственное, что происходит в процессе развертывания, это повторное использование package-lock.json
и установка использованных пакетов :
Serverless: Package lock found - Using locked versions
Serverless: Packing external modules: graphql-compose@^7.19.3, linewrap@^0.2.1, d64@^1.0.0, graphql-scalars@^1.2.6, graphql-tools@^6.0.12
Serverless: Packaging service...
Мой вопрос заключается в том, как прекратить повторный запуск установки npm во время развертывания, вместо этого он должен использовать существующий node_moudles
при упаковке внешних модулей.
Кто-нибудь может мне помочь в этом. ?
Комментарии:
1. Попробуйте удалить
exclude: /node_modules/,
из правил в вашемwebpack.config.js
. Есть ли причина, по которой вы хотите, чтобы все вашиnode_modules
файлы были в пакете? Это может привести к тому, что ваш бессерверный пакет будет огромным, поскольку теперь он включает все пакеты npm. Я бы определенно не рекомендовал это.2. @ultimoTG Нет, чего я хочу, так это
node_modules
того, что пакеты должны быть повторно установлены при упаковке.