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中是啥意思? [复制]

<>(尖括号)在 MS-SQL Server 中是啥意思?

在c语言中 if(0)是啥意思

这个符号在 IntelliJ 中是啥意思? (文件名左下角红圈,里面有“J”)

在 ElectronJS (asar) 中编写 JSON 文件