PzY*_*Yon 10 node.js npm create-react-app npm-scripts
我想在 npm 脚本中动态设置一个环境变量。
我正在使用,cross-env
因为我正在 Windows 上开发,并且服务器是基于 Unix 的。我想用当前日期 ( new Date()
)初始化一个环境变量,以便我可以在我的中访问和呈现它create-react-app
:
这有效(硬编码字符串):
"scripts": {
"start": "cross-env-shell REACT_APP_BUILD_DATE=\"currentDate\" react-scripts-ts start",
}
Run Code Online (Sandbox Code Playgroud)
显然,currentDate
不应是字符串,而是以下表达式的结果:new Date()
.
我怎样才能做到这一点?换句话说:如何评估一些常规 JavaScript 并将其结果用作 npm 脚本?或者这是不可能的?
我正在使用简单的节点脚本将环境变量传递到被调用的脚本中。它使用 child_process.execSync。
// File name: ./build.js
/* eslint-env node */
const execSync = require('child_process').execSync;
const env = Object.create(process.env);
env.REACT_APP_BUILD_DATE= Date.now();
console.log('Used env variables: ' + JSON.stringify(env));
console.log('Run command: react-scripts start');
execSync('react-scripts-ts start', { env: env, stdio: 'inherit' });
Run Code Online (Sandbox Code Playgroud)
更新 package.json 脚本中的启动命令。像这样:
"scripts": {"start": "node ./build.js"}
Run Code Online (Sandbox Code Playgroud)
在这种特殊情况下,您最好使用 shell 命令而不是 JavaScript,因此它应该类似于以下内容:
"scripts": {
"start": "cross-env-shell REACT_APP_BUILD_DATE=$(date '+%F %H:%M:%S') react-scripts-ts start",
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
10163 次 |
最近记录: |