问题标签 [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.
javascript - 羡慕客户端库有什么意义?
为了解决来自 Redux 的警告背后的问题,我偶然发现了一个建议,该建议解释了在使用 React 或 Redux 时,为了生成针对生产使用而优化的构建,envifying 是必要的步骤。Envifying被解释为process.env.NODE_ENV
用实际值(例如'production'
.
接受 envifying 是必要的并且上述解释是正确的,这让我感到困惑,因为它似乎假设 React 和 Redux 等客户端库将包含节点特定的环境变量。是的,我知道这些库特别适用于构建同构/通用 JavaScript 应用程序,但会令人惊讶。我理解正确吗?如果是这样,是否有我需要注意在process.env.NODE_ENV
节点之外使用的模式的解释?
如果我正确理解了这些建议,它会建议如果我使用 Webpack,我可能想要使用DefinePlugin
类似这样的插件。
这似乎还需要我将 NODE_ENV 变量设置为我想为我的客户端代码生成的目标环境。这很奇怪,因为我在构建服务器上设置了一个环境变量,以反映实际代码在部署到的服务器上运行的环境应该是什么。
所有这一切让我觉得我在一般模式方面遗漏了一些东西。
相关信息:
npm - 带有 browserify 的 laravel/elixir 环境
在带有browserify的javascript项目中使用环境变量的解决方案是什么?
在我当前的项目中,我将 laravel 与 elixir 和 browserify 一起使用,我试图添加 envify 但我不知道如何将它实现到我的 elixir 代码中:
基本上我需要 env 用于 api url (dev/prod),所以最好在根目录中有 .env.json,然后以某种方式将这些变量放入我的 js 代码中。
有什么想法或更好的解决方案吗?
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!!
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},我安装了宽松的环境,但我必须为每个变量指定。
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”未找到。
任何帮助表示赞赏。
javascript - 使用 browserify 进行条件编译/要求(死代码消除)
我知道您不能有条件require
地使用 browserify 模块,因为它们是在编译时捆绑的,而不是在运行时捆绑的。有条件地剥离模块怎么样?
假设我有一个应用程序可以让您创建图片库。还可以编辑画廊(重新排序图像等)。但是画廊的渲染和剪辑是耦合的,不能完全分开。但是对于部署画廊,我不需要编辑功能,而且我知道使用了哪些模块。我想创建两个不同的包,一个具有编辑功能,一个不消除大部分编辑代码。我所做的是使用envify
和 uglify 的死代码消除将我自己的代码从较小的包中排除。
之前 (thing.js)
之后(thing.js)
这很好用,编辑器包已经更小了。而且因为我知道另一个包永远不会使用thing
它的功能,所以什么都不导出并有一个空模块是可以的。
现在问题来了。例如,如果thing.js
需要一个模块,即使在消除死代码后没有人使用它pica
,它仍然会被捆绑。
之前 (thing.js)
之后(thing.js)
总结一下:我的包现在包含pica
库,但没有人需要它。需要它的代码是死代码,但uglify显然无法理解它可以pica
完全删除。
javascript - Envify 不替换我的环境变量
我在通用 React 应用程序中的 Browserify Envify模块遇到问题。
我有以下功能切换文件:
在我的 Browserify 输出中变成
当我在我的通用 React 应用程序中使用时,featureToggles
我得到了来自服务器的正确响应,但客户端在补水时会覆盖。导致服务器的新功能被客户端水合中的旧功能取代。
我的 Browserify 脚本如下所示(此代码段将在下面重复多次,并根据我的尝试进行一些小的更改):
我尝试用正常替换自定义 envify(自述文件中缺少示例):
我试过设置变量显式:
我试过清除:
我试过在全球范围内运行它:
我继承了代码,所以我基本上只是在黑暗中摸索。任何帮助,将不胜感激!
根据我对 envify 的了解,我期望得到以下输出:
如果有任何帮助,我的功能切换可以在本地工作,但不能在我的暂存环境中工作。当我循环浏览我的功能并动态阅读时,它起初也不起作用process.env
。这意味着 envify 至少会有所作为?
javascript - 试图加载 vue-agile 但 ParseError
我正在使用 vuejs 构建一个网站,并尝试加载敏捷 vue 以在 vue 应用程序中全局使用。所以我在 main.js 中添加了以下代码:
稍后我将 browserify 与 babelify 和 envify 一起使用来创建一个 bundle.js 文件。并使用以下代码进行编译:
使用 package.json 文件中的 babelify 预设 'babel-preset-env' 设置。我收到以下错误:
我通过添加 esmify 摆脱了错误:
但我遇到了一个新错误:
我一直在寻找解决方案,我认为 browserify 没有转换所有文件(只有 topfiles,而不是依赖项)有问题,但我还没有找到如何强制它。感谢所有帮助。