Я бы создал собственный сценарий JavaScript, делающий это для вас:
execute.js
var spawn = require('child_process').spawn;
// because first arg will actually be something like "./execute.js"
// this is the "regular javascript" you want to evaluate
var arg1 = process.argv[1];
// so lets eval it
var res = eval(arg1);
// this is the remaining args, that is the command you want to run (and its args)
var command = process.argv[2];
var commandArgs = process.argv.slice(3);
// if arg1 evaluation resulted in a value, append this value to the list of args
if (res) {
commandArgs.push(res);
}
// execute the command
var prc = spawn(command, commandArgs);
и ваше определение сценария станет:
"scripts": {
"start": "cross-env-shell ./execute.js \"process.env.REACT_APP_BUILD_DATE = new Date();\" react-scripts-ts start",
}
Или что-то похожее.
Это не проверено, но вы должны начать работу над решением " оценить некоторый обычный JavaScript и использовать его результат в сценарии npm "
Но если вы хотите установить дату только в переменной env, решение из @bredikhin лучше.
АЛЬТЕРНАТИВНОЕ РЕШЕНИЕ ДЛЯ РАБОТЫ С ПЕРЕМЕННЫМИ ОКРУЖАЮЩЕЙ СРЕДЫ
Если вы можете позволить себе записать в файл .env
в корне вашего проекта (вручную или программно), вы можете затем использовать dotenv для заполнения переменных окружения им (с ) документация ):
// Usage
// As early as possible in your application, require and configure dotenv.
require('dotenv').config()
/* Create a .env file in the root directory of your project. Add environment-specific variables on new lines in the form of NAME=VALUE. For example:
DB_HOST=localhost
DB_USER=root
DB_PASS=s1mpl3
That's it.
process.env now has the keys and values you defined in your .env file.
*/
const db = require('db');
db.connect({
host: process.env.DB_HOST,
username: process.env.DB_USER,
password: process.env.DB_PASS
});