问题标签 [envify]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
497 浏览

javascript - 羡慕客户端库有什么意义?

为了解决来自 Redux 的警告背后的问题,我偶然发现了一个建议,该建议解释了在使用 React 或 Redux 时,为了生成针对生产使用而优化的构建,envifying 是必要的步骤。Envifying被解释为process.env.NODE_ENV用实际值(例如'production'.

接受 envifying 是必要的并且上述解释是正确的,这让我感到困惑,因为它似乎假设 React 和 Redux 等客户端库将包含节点特定的环境变量。是的,我知道这些库特别适用于构建同构/通用 JavaScript 应用程序,但会令人惊讶。我理解正确吗?如果是这样,是否有我需要注意在process.env.NODE_ENV节点之外使用的模式的解释?

如果我正确理解了这些建议,它会建议如果我使用 Webpack,我可能想要使用DefinePlugin类似这样的插件。

这似乎还需要我将 NODE_ENV 变量设置为我想为我的客户端代码生成的目标环境。这很奇怪,因为我在构建服务器上设置了一个环境变量,以反映实际代码在部署到的服务器上运行的环境应该是什么。

所有这一切让我觉得我在一般模式方面遗漏了一些东西。

相关信息:

0 投票
0 回答
185 浏览

npm - 带有 browserify 的 laravel/elixir 环境

在带有browserify的javascript项目中使用环境变量的解决方案是什么?
在我当前的项目中,我将 laravel 与 elixir 和 browserify 一起使用,我试图添加 envify 但我不知道如何将它实现到我的 elixir 代码中:

基本上我需要 env 用于 api url (dev/prod),所以最好在根目录中有 .env.json,然后以某种方式将这些变量放入我的 js 代码中。

有什么想法或更好的解决方案吗?

0 投票
2 回答
813 浏览

reactjs - Envify CLI not removing process.env.NODE_ENV

I am trying to reduce the size of my React bundle.js.

I am attempting to use Envify with Browserify to replace process.env.NODE_ENV with the string "production", in order to use uglifyjs and remove all the extra development code.

Here is my command: browserify -t [envify --NODE_ENV production] assets/js/app.js -o assets/js/bundle.js

So my bundle.js is successfully created, but it still has some of the instances of process.env.NODE_ENV.

All the instances that are in my "app.js" or my other components are correctly replaced with "production".

...But in all of my required modules from the node_modules folder (like react etc), the instances are not replaced.

Any help greatly appreciated! THX!

******************* Edit **********************

JMM's solution successfully answered the original question, but I still had an issue because I am using React-Router (I think).

I created a simple example that shows the situation.

Here is my app.js file:

If I run NODE_ENV=production browserify -t envify assets/js/app.js -o assets/js/bundle.js, I still have some instances of process.env.NODE_ENV in the bundle.js.

I found a work-around by simply creating the bundle.js with: browserify assets/js/app.js -o assets/js/bundle.js, and then running envify on the bundle with: NODE_ENV=production envify assets/js/bundle.js > assets/js/bundle2.js

This solves my problem, but I am still unsure why react-router doesn't allow browserify and envify to work together.

I hope this helps others with a similar problem!!

0 投票
2 回答
1281 浏览

reactjs - 基于环境的可变配置文件 - reactjs, webpack

我需要基于环境的 reactjs 组件中的一堆全局变量(例如:主机名、令牌、api url 等)。但我不想将它单独添加到 js 中。我想创建 project.config 文件来设置 prod:{hostname:example.com, api-url:prod, etc} 和 dev:{hostname:localhost.com, api-url:dev, etc},我安装了宽松的环境,但我必须为每个变量指定。

0 投票
1 回答
224 浏览

javascript - Browserify多个转换错误

尝试使用 browserify 运行多个转换。

我在目录中有以下文件

  • 开发者.json
  • 阶段.json
  • prod.json
  • index.js

json 文件是特定于环境的配置文件。

index.js:

var mode = process.env.APP_ENV; module.exports = require('./' + mode + '.json');

我正在使用 envify 转换在 dev/prod/stage 和配置之间进行选择以评估动态表达式。

如果我只是运行 envify 它可以正常工作,但是当我使用 envify 和 configurify 时,我收到一条错误消息,提示“./undefined.json”未找到。

在此处输入图像描述

任何帮助表示赞赏。

0 投票
2 回答
605 浏览

javascript - 使用 browserify 进行条件编译/要求(死代码消除)

我知道您不能有条件require地使用 browserify 模块,因为它们是在编译时捆绑的,而不是在运行时捆绑的。有条件地剥离模块怎么样?

假设我有一个应用程序可以让您创建图片库。还可以编辑画廊(重新排序图像等)。但是画廊的渲染和剪辑是耦合的,不能完全分开。但是对于部署画廊,我不需要编辑功能,而且我知道使用了哪些模块。我想创建两个不同的包,一个具有编辑功能,一个不消除大部分编辑代码。我所做的是使用envify和 uglify 的死代码消除将我自己的代码从较小的包中排除。

之前 (thing.js)

之后(thing.js)

这很好用,编辑器包已经更小了。而且因为我知道另一个包永远不会使用thing它的功能,所以什么都不导出并有一个空模块是可以的。

现在问题来了。例如,如果thing.js需要一个模块,即使在消除死代码后没有人使用它pica,它仍然会被捆绑。

之前 (thing.js)

之后(thing.js)

总结一下:我的包现在包含pica库,但没有人需要它。需要它的代码是死代码,但uglify显然无法理解它可以pica完全删除。

0 投票
1 回答
309 浏览

javascript - Envify 不替换我的环境变量

我在通用 React 应用程序中的 Browserify Envify模块遇到问题。

我有以下功能切换文件:

在我的 Browserify 输出中变成

当我在我的通用 React 应用程序中使用时,featureToggles我得到了来自服务器的正确响应,但客户端在补水时会覆盖。导致服务器的新功能被客户端水合中的旧功能取代。

我的 Browserify 脚本如下所示(此代码段将在下面重复多次,并根据我的尝试进行一些小的更改):

我尝试用正常替换自定义 envify(自述文件中缺少示例):

我试过设置变量显式:

我试过清除:

我试过在全球范围内运行它:

我继承了代码,所以我基本上只是在黑暗中摸索。任何帮助,将不胜感激!

根据我对 envify 的了解,我期望得到以下输出:

如果有任何帮助,我的功能切换可以在本地工作,但不能在我的暂存环境中工作。当我循环浏览我的功能并动态阅读时,它起初也不起作用process.env。这意味着 envify 至少会有所作为?

0 投票
0 回答
94 浏览

javascript - 试图加载 vue-agile 但 ParseError

我正在使用 vuejs 构建一个网站,并尝试加载敏捷 vue 以在 vue 应用程序中全局使用。所以我在 main.js 中添加了以下代码:

稍后我将 browserify 与 babelify 和 envify 一起使用来创建一个 bundle.js 文件。并使用以下代码进行编译:

使用 package.json 文件中的 babelify 预设 'babel-preset-env' 设置。我收到以下错误:

我通过添加 esmify 摆脱了错误:

但我遇到了一个新错误:

我一直在寻找解决方案,我认为 browserify 没有转换所有文件(只有 topfiles,而不是依赖项)有问题,但我还没有找到如何强制它。感谢所有帮助。