使用json或env文件使npm脚本接收动态值

我正在尝试创建一个npm脚本来帮助部署React应用(使用create-react-app),但是我需要在env或json文件上设置S3存储桶url字符串,因此我可以将其用于多个存储桶,而不更改package.json脚本内容。老实说,我到处都看过,但还没有使它工作。

是否有人可以做到这一点,或者我该怎么做?

masycq 回答:使用json或env文件使npm脚本接收动态值

您可以在节点脚本中通过require读取任何json文件。假设您有以下“ my_settings.json”文件:

{
    "bucketName": "test_dev"
}

以及如下所示的节点脚本:

var settings = require("./my_settings.json");

console.log(settings.bucketName);

如果运行它(假设这两个文件都在同一目录中),您将在控制台中看到存储区名称“ test_dev”。

因此,您将能够获取设置并根据它们组织构建过程。

,

通过使用外部javascript文件解决:

package.json

"scripts": {
    "deploy:staging": "cross-env NODE_ENV=staging node ./scripts/deploy.js","deploy:prod": "cross-env NODE_ENV=production node ./scripts/deploy.js"
},

scripts / deploy.js

const { spawn } = require('child_process')

const env = require('./env.json')

const ls = spawn(
    `yarn build && aws --profile XXXXXX s3 sync build s3://${
        env[process.env.NODE_ENV]
    }`,{ shell: true },)

ls.stdout.on('data',(stdout) => console.log(stdout.toString()))
ls.stderr.on('data',(stderr) => console.log(stderr.toString()))
ls.on('close',(code) => console.log(`Closed ${code}`))

env.json

{
    "staging": "STAGING_URL","production": "PRODUCTION_URL"
}

不是最漂亮,但对我有用!

本文链接:https://www.f2er.com/3164292.html

大家都在问