【问题标题】:Generating code at build time depending on configuration, in VueJS在 VueJS 中根据配置在构建时生成代码
【发布时间】:2020-03-27 07:06:40
【问题描述】:

我有一个带有几个视图的 VueJS/vue-cli 应用程序。我想根据构建时配置启用/禁用一些代码。

这与开发/生产并不严格相关,但例如说我的应用程序有 3 个功能,并且我希望根据我交付产品的人有 2 个不同的构建。

例如,假设我有视图 Foo、Bar 和 Baz:我希望仅在为 Deploy1 构建时在生成的静态文件中具有 Foo 视图,仅在为 Deploy2 构建时才有 Bar,并且我总是希望看到 Baz部署。

当然,与 Bar 相关的代码不应包含在 Deploy1 中,因此我不是在谈论运行时检查。

这在概念上类似于 #ifdef 宏在 C 中可以做的事情。 如何在 VueJS 和 vue-cli 中获得类似的结果? (还是一般的 NodeJS?)

提前致谢!

【问题讨论】:

标签: node.js vue.js vue-cli


【解决方案1】:

在我的例子中,我为构建脚本使用了多个入口点: 在我的 package.json 中:

 "develop:foo": "vue-cli-service build --mode develop --dest dist/foo --target app ---modern src/foo.js",
 "develop:bar": "vue-cli-service build --mode develop --dest dist/bar --target app --modern src/bar.js",

现在在 foo.js 和 bar.js 中它非常简单:它相当于你的 main.js,因此你可以在你的应用程序中包含任何插件和组件

在我的情况下,我对应用程序的两个版本使用相同的代码,但其中包含比另一个版本更多的功能,例如,在我的一个版本中,我不包括 websockets,我不包括一些第三方api ...等

你几乎可以分开任何东西。

我希望能回答你的问题!

【讨论】:

  • 谢谢!这很有趣,但是如果您提供不同的 main.js 文件,您如何确保来自一个构建的代码不包含在另一个构建中?我的意思是,即使它未被使用,它仍然存在,不是吗?
  • 好吧,我在 dist/foodist/bar 生成两个应用程序:单独的目录。
  • 我正在为 CDN 上的 S3 存储桶(AWS 的对象存储)提供这两个应用程序(不同的基本 url)
  • 好的,这很清楚,但我仍然不明白如何确保与foo 相关的代码不存在于bar 中。你有 MWE 吗?
  • 为了更清楚地说明:假设foo.jsbar.js 都使用了一个文件baz.js,该文件具有与两者相关的功能,但仅限于此。假设baz.js 包含由foo 使用的func_foo 和由bar 使用的func_bar。在构建foo时,如何确保代码中不包含func_bar
猜你喜欢
  • 2019-12-19
  • 2017-12-31
  • 2022-08-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-02
  • 2016-05-17
  • 1970-01-01
相关资源
最近更新 更多