package.json参考外部json的值

问题描述 投票:0回答:1

我有一个metadata.json 文件,其中包含一些值:

{"build":{"major":0,"minor":88}}

在我的 create-react-app 项目中,我需要运行脚本来上传哨兵地图文件:

"sentry" : "sentry-cli releases files 0.88 upload-sourcemaps --validate ./build"

应从metadata.json 文件中提取0.88。然后我可以运行它:

npm run sentry

如何使用构建主要/次要从metadata.json文件中提取值0.88并将其插入哨兵命令中?

reactjs npm create-react-app sentry
1个回答
1
投票

我不确定是否有解决方案可以通过

package.json
来做到这一点。

以下是我为解决此问题而采取的步骤:

  1. 创建一个新的
    js
    文件。假设名字是
    run-command.js
  2. node ./run-command.js
    中的
    script
    对象下添加一行
    package.json
  3. 在这个新创建的文件中导入
    metadata.json
    文件并提取必要的数据
  4. 执行你的命令

示例:

package.json

scripts: {
  "sentry": "node ./run-command.js"
}

运行命令.js

const metadata = require('./metadata.json');
const { exec } = require('child_process');

exec(`echo ${metadata.build.major}`, (err, stdout, stderr) => {
  if (err) {
    // node couldn't execute the command
    return;
  }

  // the *entire* stdout and stderr (buffered)
  console.log(`stdout: ${stdout}`);
  console.log(`stderr: ${stderr}`);
});

将 echo 替换为您的命令。它看起来像

./node_modules/.bin/sentry ...

如果您熟悉 shell 脚本,则可以使用 bash 脚本,例如

./sentry.sh

© www.soinside.com 2019 - 2024. All rights reserved.