无法使用传递给 "npm start" 的参数配置 React Pre Hook
Cannot configure a React Pre Hook with parameters passed to "npm start"
我创建了一个全新的项目:
$ npx create-react-app test-react-app && cd test-react-app && npm start
这里是回购:https://github.com/tlg-265/test-react-app
我创建了一个新脚本:/prepare-project.js
,内容如下:
let project = 'ferrari' // replace this value with the one passed via: $ npm start [what to put here?]
console.log(`########################`);
console.log(`###### The current project is: ${project} ######`);
console.log(`########################`);
文件内容:/package.json
是:
{
"name": "test-react-app",
"version": "0.1.0",
"private": true,
"dependencies": {
"@testing-library/jest-dom": "^4.2.4",
"@testing-library/react": "^9.3.2",
"@testing-library/user-event": "^7.1.2",
"react": "^16.12.0",
"react-dom": "^16.12.0",
"react-scripts": "3.3.1"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject",
"prestart": "node prepare-project.js"
},
"eslintConfig": {
"extends": "react-app"
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
}
}
在哪里你可以看到我配置了 pre hook
:
"prestart": "node prepare-project.js"
我的目标是 运行:
$ npm start [what to put here?]
因此在脚本内部:/prepare-project.js
我可以读取该值。
我试过:
$ node prepare-project.js --project=mclaren
尝试从脚本中读取该值时没有运气:prepare-project.js
。
知道如何实现吗?
谢谢!
您可以使用 yargs
模块来解析命令行参数,然后您可以使用 child_process
来执行您的命令。您的代码应该如下所示,您可以添加自己的自定义逻辑。
const yargs = require('yargs');
const { execSync } = require('child_process');
const argv = yargs
.option('project', {
alias: 'p',
description: 'name of the project',
type: 'string',
})
.help()
.alias('help', 'h')
.argv;
console.log(argv.project);
console.log(`npm start --project=${argv.project}`);
const output = execSync(`npm start --project=${argv.project}`);
console.log(output)
我创建了一个全新的项目:
$ npx create-react-app test-react-app && cd test-react-app && npm start
这里是回购:https://github.com/tlg-265/test-react-app
我创建了一个新脚本:/prepare-project.js
,内容如下:
let project = 'ferrari' // replace this value with the one passed via: $ npm start [what to put here?]
console.log(`########################`);
console.log(`###### The current project is: ${project} ######`);
console.log(`########################`);
文件内容:/package.json
是:
{
"name": "test-react-app",
"version": "0.1.0",
"private": true,
"dependencies": {
"@testing-library/jest-dom": "^4.2.4",
"@testing-library/react": "^9.3.2",
"@testing-library/user-event": "^7.1.2",
"react": "^16.12.0",
"react-dom": "^16.12.0",
"react-scripts": "3.3.1"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject",
"prestart": "node prepare-project.js"
},
"eslintConfig": {
"extends": "react-app"
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
}
}
在哪里你可以看到我配置了 pre hook
:
"prestart": "node prepare-project.js"
我的目标是 运行:
$ npm start [what to put here?]
因此在脚本内部:/prepare-project.js
我可以读取该值。
我试过:
$ node prepare-project.js --project=mclaren
尝试从脚本中读取该值时没有运气:prepare-project.js
。
知道如何实现吗?
谢谢!
您可以使用 yargs
模块来解析命令行参数,然后您可以使用 child_process
来执行您的命令。您的代码应该如下所示,您可以添加自己的自定义逻辑。
const yargs = require('yargs');
const { execSync } = require('child_process');
const argv = yargs
.option('project', {
alias: 'p',
description: 'name of the project',
type: 'string',
})
.help()
.alias('help', 'h')
.argv;
console.log(argv.project);
console.log(`npm start --project=${argv.project}`);
const output = execSync(`npm start --project=${argv.project}`);
console.log(output)