ElectronJs:大括号''在包json中是啥意思
Posted
技术标签:
【中文标题】ElectronJs:大括号\'\'在包json中是啥意思【英文标题】:ElectronJs: What does curly braces '' mean in package jsonElectronJs:大括号''在包json中是什么意思 【发布时间】:2016-09-12 00:15:26 【问题描述】:我正在浏览一些电子 package.json 示例,其中我发现了一些 interpolations
,如下所示:
"updater":
"urls":
"darwin": "& SQUIRREL_UPDATES_URL /update/%CHANNEL%/darwin?version=%CURRENT_VERSION%",
"win32": "& SQUIRREL_UPDATES_URL /update/%CHANNEL%/win32",
"linux": "& SQUIRREL_UPDATES_URL /update/%CHANNEL%/linux"
"piwik":
"serverUrl": "& PIWIK_SERVER_URL "
,
"sentry":
"dsn": "& SENTRY_DSN_PRIVATE "
我真的不知道以下内容:
-
这个 在 json 中是什么意思
这些变量存在哪里
&
在
中是什么意思"& SENTRY_DSN_PRIVATE "
如果有人能解释一下,那就太好了。非常感谢。
【问题讨论】:
【参考方案1】:我猜你说的是Whatsie,它是package.json。
如果您查看位于文件 tasks/compile.coffee 中的 Gulp 任务之一,您将能够看到以下行(在 CoffeeScript 中):
# Move package.json
gulp.task 'compile:' + dist + ':package', ['clean:build:' + dist], ->
gulp.src './src/package.json'
.pipe mustache process.env
.pipe gulp.dest dir
这里实际的package.json 被传递给mustache 模板引擎——它接收一个模板作为第一个参数(package.json 这里就像一个模板)和一个要插入到模板中的数据作为第二个参数论点 - process.env
。
由于package.json 的作用类似于mustache 的模板,您可以在其中使用mustache 语法。
花括号 是其中的一部分,它们用作占位符,在编译模板时将被实际数据替换。在mustache docs也可以找到一行:
您也可以使用 & 来取消转义变量:& name
所以& name
是为了防止值被转义。否则,如果你不使用 &
并且输出的值有一些危险字符,它们将被更安全的字符替换(最初是为了防止模板中的 XSS),结果它会转换初始值,这并不总是你想要什么。在这种情况下,作者希望保留原始价值。
回到process.env
- 它是一个对象,可以在Node.JS 中访问environment variables。存储库.env-example 中有一个文件,其中包含开发人员必须设置的环境变量示例,以使应用程序在不同环境中以不同方式工作(例如在本地机器或 CI 服务器上)。此文件中某些变量的名称是在 package.json 中用作模板占位符的变量 - 我猜该应用程序的作者使用所有这些来简化不同环境的构建过程。
【讨论】:
以上是关于ElectronJs:大括号''在包json中是啥意思的主要内容,如果未能解决你的问题,请参考以下文章
这些花括号在 python Django 中是啥意思? **
这个“(function());”,括号内的函数,在javascript中是啥意思? [复制]