在使用serverless-webpack的无服务器部署期间使用现有的node_modules

问题描述

我正在使用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)$/,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来部署应用程序时,一切正常,并且lambda已成功部署。 唯一的事情是,在部署过程中,它正在使用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。 有人可以帮我吗? ?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)