首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在生产中禁用sls插件(每个阶段不同的插件?)

在生产中禁用sls插件(每个阶段不同的插件?)
EN

Stack Overflow用户
提问于 2018-01-26 11:46:27
回答 1查看 1.5K关注 0票数 2

我对serverless-offline插件有个问题。我希望它只在本地开发(开发阶段)时才能访问,而不是在任何其他阶段。

我的serverless.yml看起来是这样的:

代码语言:javascript
复制
service: foo
provider:
  # ...
  stage: dev

plugins:
  - serverless-offline

custom:
  stage: "${opt:stage, self:provider.stage}"
  # ...

而且工作正常(在我的本地机器上)

我尝试过这个解决方案 (将插件作为自定义变量传递),但它不起作用

代码语言:javascript
复制
service: foo
provider:
  # ...
  stage: dev

custom:
  stage: "${opt:stage, self:provider.stage}"
  plugins:
    dev:
      - serverless-offline
  # ...

plugins: ${self:custom.plugins.${self:custom.stage}}

当运行sls offline start时,它会给出一个错误Serverless command "offline" not found

我已经包括了devDependencies (package.json)中的无服务器离线版本,当serverless.yml中包含插件时,它会给出一个错误Serverless command "offline" not found

如何解决这类问题(现在我必须在部署之前将其注释掉)?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-02 11:41:23

https://forum.serverless.com/t/separate-plugins-for-different-environments/2043/7声明您不能使插件动态工作。

插件是在分析serverless.yml之前加载的,因此您不能有包含或排除基于stage的插件的动态变量。

最后,我编写了一个小脚本来从配置文件中删除plugins属性。我们的配置是JSON,而不是YAML,但是您可以使用yamljs包解析和编写YAML文件。这样,您就可以在版本控制系统中保持配置文件的完整性,并且只能在构建时对其进行修改。

它并不优雅,因为它删除了所有的插件,而不是一个特定的插件,但它可以工作。如果你只需要删除一个特定的插件,它也很容易适应。

我已经将这段代码放入一个名为remove-serverless-offline.js的文件中。

代码语言:javascript
复制
const jsonfile = require('jsonfile');
const file = './serverless.json';
jsonfile.readFile(file, function(err, obj){

  if(!obj.hasOwnProperty('plugins')){

    console.log('serverless.json: could not find serverless-offline in plugin list.');
    return;
  }

  delete obj.plugins;

  jsonfile.writeFile(file, obj, {spaces: 4}, function(err){

    console.error(err);
  });

  console.log('serverless.json: removed serverless-offline from plugin list.')
});

在我的package.json下面的scripts中,我添加了以下内容:

代码语言:javascript
复制
"remove-serverless-offline": "node remove-serverless-offline.js",

在buildspec.yml中,需要将这一行添加到pre_build命令中。

代码语言:javascript
复制
- npm run remove-serverless-offline
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48460763

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档