Сделайте так, чтобы скрипт npm получал динамические значения, используя файл json или env - PullRequest
0 голосов
/ 04 ноября 2019

Я пытаюсь создать сценарий npm, чтобы помочь развертыванию реагирующих приложений (используя create-реагировать-приложение), но мне нужно установить строку URL-адреса корзины S3 в файле env или json, чтобы я мог использовать его для несколькихведра без изменения содержимого скрипта package.json. Я честно посмотрел везде, но пока не смог заставить его работать.

Кто-нибудь знает, можно ли это сделать, или как я могу это сделать?

Ответы [ 2 ]

0 голосов
/ 05 ноября 2019

Решено с использованием внешнего файла 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"
}

Не самая красивая, но у меня работает!

0 голосов
/ 04 ноября 2019

Вы можете прочитать любой JSON-файл с помощью require в вашем скрипте узла. Допустим, у вас есть следующий файл «my_settings.json»:

{
    "bucketName": "test_dev"
}

и скрипт узла, который выглядит следующим образом:

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

console.log(settings.bucketName);

Если вы запустите его (при условии, что оба эти файланаходятся в том же каталоге), в консоли вы увидите имя группы «test_dev».

Таким образом, вы сможете получать настройки и организовывать процесс сборки в зависимости от них.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...