UpScore@0.6.0 start: `react-scripts start` npm ERR! spawn ENOENT npm ERR! npm ERR! Failed at the UpScore@0.6.0 start script 'react-scripts start'. npm ERR! react-scripts start npm ERR! Solution 应该就是react-scripts没有安装成 global 的 解决方式很简单: npm install -g npm@latest to update npm because it
"@testing-library/user-event": "^12.8.3", "react": "^17.0.2", "react-dom": "^17.0.2", "react-scripts ": "4.0.3", "web-vitals": "^1.1.2" }, "scripts": { "start": "react-scripts start", "build ": "react-scripts build", "test": "react-scripts test", "eject": "react-scripts eject" }, "scripts": { "start": "react-scripts start", "build": "react-scripts build", "test": "react-scripts test", "eject": "react-scripts eject" } npm start将会执行 react-scripts start Browserlist: 这个属性用于在不同的前端工具之间共享目标浏览器和
0.1.0", "private": true, "dependencies": { "react": "^16.6.1", "react-dom": "^16.6.1", "react-scripts ": "2.1.1" }, "scripts": { "start": "react-scripts start", "build": "react-scripts build" , "test": "react-scripts test", "eject": "react-scripts eject" }, "eslintConfig": { " : hello-react-demo/node_modules/react-scripts$ tree . . ├── LICENSE ├── README.md ├── bin │ └── react-scripts.js ; console.log( 'See: https://github.com/facebook/create-react-app/blob/master/packages/react-scripts
"@testing-library/user-event": "^12.8.3", "react": "^17.0.2", "react-dom": "^17.0.2", "react-scripts ": "4.0.3", "web-vitals": "^1.1.2" }, "scripts": { "start": "react-scripts start", "build ": "react-scripts build", "test": "react-scripts test", "eject": "react-scripts eject" }, "scripts": { "start": "react-scripts start", "build": "react-scripts build", "test": "react-scripts test", "eject": "react-scripts eject" } npm start将会执行 react-scripts start Browserlist: 这个属性用于在不同的前端工具之间共享目标浏览器和
在package.json中把”start“修改成”set PORT=9000 && react-scripts start“ 代码示例如下: "scripts": { "start": "set PORT=9000 && react-scripts start", "build": "react-scripts build", "test": "react-scripts test --env=jsdom", "eject": "react-scripts eject" }
start", "build-test": "NODE_ENV=test react-scripts build", "build-qal": "NODE_ENV=qal react-scripts build", "build-prd": "NODE_ENV=prd react-scripts build" } 项目基于 apple m1 开发,未考虑到 window 系统 当我们配置好命令行后 start", "build-test": "REACT_APP_ENV=test react-scripts build", "build-qal": "REACT_APP_ENV=qal react-scripts build", "build-prd": "REACT_APP_ENV=prd react-scripts build" } 在 src/index.js 入口文件中读取文件 小坑提示:REACT_APP_ENV=development react-scripts start 不可中间插入其他的脚本。
其实其他的UI库的使用方式都一样, 没有啥好记得, 用的时候翻翻文档,就可以了 暴露配置 yarn eject E:\js\react_antd>yarn eject yarn run v1.22.19 $ react-scripts webpack\persistentCache\createEnvironmentHash.js to the project Updating the dependencies Removing react-scripts start" with "node scripts/start.js" Replacing "react-scripts build" with "node scripts/build.js" Replacing "react-scripts test" with "node scripts/test.js" Configuring package.json Adding Jest configuration start", //去除 - "build": "react-scripts build", //去除 - "test": "react-scripts test", //去除 +
在 React 脚手架(如 create-react-app)生成的项目中,Webpack 的配置是默认隐藏的,因为它使用了一个名为 react-scripts 的包来处理所有的构建和启动任务。 然而,如果你想查看或修改 Webpack 的配置,有几种方法可以做到这一点: 使用 eject 命令: 运行 npm run eject 或 yarn eject(取决于你的包管理器)会永久地将 react-scripts 修改 package.json 中的脚本命令,使用 react-app-rewired 替换 react-scripts。 直接修改 node_modules/react-scripts: 这并不是一个推荐的方法,因为直接修改 node_modules 文件夹中的文件会导致项目难以维护,并且当你重新安装依赖项时,这些更改会丢失 然而,如果你只是想快速查看一下默认配置而不打算长期修改它,你可以直接查看 node_modules/react-scripts/config 文件夹下的 Webpack 配置文件。
改进配置 clone 目录后在代码编辑器中打开 react-scripts/scripts/init.js 文件。 ='ENGR' 一旦用这个版本的 create-react-app 工具安装完了 react-scripts,用户就必须将 .env.example 文件重命名为 .env。 发布 react-scripts 到 NPM 在发布到 npm 之前,我们需要将 react-scripts/package.json 文件中 name 属性的值改为 unicodelabs-react-scripts 现在,从终端中进入 react-scripts 目录: ? 登录到 npm: ? 按提示进行,并发布。 ? 此外,fork 并定制化自己的 react-scripts 能帮助你和团队容易地增加所有需要的配置。
安装@craco/craco可以无需暴露webpack进行配置覆盖 yarn add @craco/craco package.json更改 "scripts": { - "start": "react-scripts start", - "build": "react-scripts build", - "test": "react-scripts test", + "start": "craco start
16.8.6", "react-dom": "^16.8.6", "react-redux": "^7.1.0", "react-router-dom": "^5.0.1", "react-scripts 1.3.0", "swiper": "^4.5.0" }, "scripts": { "start": "set HOST=localhost&& set PORT=3003 && react-scripts start", "build": "react-scripts build", "test": "react-scripts test --env=jsdom", "eject ": "react-scripts eject" } } render() { let token = this.props.token return ( <Router
因为脚手架为了实现“零配置”,会默认把一些通用的脚本和配置集成到 react-scripts,目的是让我们专注于src目录下的开发工作,不再操心环境配置。 项目构建完成后,会提供一个命令yarn eject,通过这个命令,我们可以把被 react-scripts 集成的配置和脚本暴露出来。 至于 react-scripts 都集成了哪些东西,通过yarn eject命令的执行记录也能看出个大概: λ yarn eject yarn run v1.6.0 $ react-scripts eject start" with "node scripts/start.js" Replacing "react-scripts build" with "node scripts/build.js" Replacing "react-scripts test" with "node scripts/test.js" Configuring package.json Adding Jest configuration
具体 package.json 定义如下: { "name": "yekai-net", "version": "1.1.2", "scripts": { "start": "react-scripts start", "build": "react-scripts build", "test": "react-scripts test --env=jsdom", "eject ": "react-scripts eject", "publish": "REACT_APP_VERSION=$(npm version patch) npm run build && rsync
准备工作 创建package.json 安装依赖项 拷贝模板 查看效果 packages/cra-template packages/cra-template--typescript packages/react-scripts react-scripts build react-scripts start react-scripts小结 packages/react-dev-utils PnpWebpackPlugin 后面实现后可改为@careteen/react-scripts, @careteen/cra-template lerna add react-scripts cra-template --scope= 下面将进一步剖析cra-tempalte, react-scripts`。 packages/react-dev-utils 此子package下存放了许多webpack-plugin辅助于react-scripts/config/webpack.config.js文件。
16.8.6", "react-dom": "^16.8.6", "react-redux": "^7.1.0", "react-router-dom": "^5.0.1", "react-scripts 1.3.0", "swiper": "^4.5.0" }, "scripts": { "start": "set HOST=localhost&& set PORT=3003 && react-scripts start", "build": "react-scripts build", "test": "react-scripts test --env=jsdom", "eject ": "react-scripts eject" } } react-router-dom页面地址路由配置: /* * @desc 页面地址路由js */ // 引入页面组件 import
/node_modules src/ -o src/ --watch --recursive", "test": "react-scripts test --env=jsdom", - "start": "react-scripts start", - "build": "react-scripts build", + "start-js": "react-scripts start", + "start": "npm-run-all -p watch-css start-js", + "build-js": "react-scripts build", + 在package.json中,将script中的 react-scripts 换成 react-app-rewired // 3.
watch-css": "npm run build-css && node-sass-chokidar src/ -o src/ --watch --recursive", "start": "react-scripts start", "build": "react-scripts build", "test": "react-scripts test --env=jsdom", 复制代码 npm start", - "build": "react-scripts build", + "start-js": "react-scripts start", + "start": " npm-run-all -p watch-css start-js", + "build-js": "react-scripts build", + "build": "npm-run-all build-css build-js", "test": "react-scripts test --env=jsdom", "eject": "react-scripts eject
return config; }; 2.自定义配置后要修改package.json /* package.json */ "scripts": { - "start": "react-scripts start", + "start": "react-app-rewired start", - "build": "react-scripts build", + "build": "react-app-rewired build", - "test": "react-scripts test", + "test": "react-app-rewired test", } 3.下载babel-plugin-import
项目名称】 脚手架生成目录主要内容 node_modules 当前项目中依赖的包都安装在这里 .bin 本地项目中可执行命令,在package.json的scripts中配置对应的脚本即可(其中有一个就是:react-scripts 提交时候的忽略提交文件配置项 package.json 当前项目的配置清单 “dependencies”: { “react”: “^16.4.1”, “react-dom”: “^16.4.1”, “react-scripts ”: “1.1.4” } 基于脚手架生成工程目录,自动帮我们安装了三个模块:react/react-dom/react-scripts react-scripts集成了webpack需要的内容 ->Babel >eslint一套 ->webpack一套 ->其它的 有sass css 处理器,最新版本有 的处理内容(项目中使用less,我们需要自己额外的安装) “scripts”: { “start”: “react-scripts start”, “build”: “react-scripts build”, “test”: “react-scripts test --env=jsdom”, “eject”: “react-scripts
可以看到生成的项目中的package.json包含很多命令: react-scripts start启动开发模式下的一个dev-server,并支持代码修改时的Hot Reload react-scripts build使用webpack进行编译打包,生成生产模式下的所有脚本,静态资源 react-scripts test执行所有测试用例,完成对我们每个模块质量的保证 这里,我们针对start这条线进行追踪 入口为create-react-app/packages/react-scripts/bin/react-scripts.js,这个脚本会在react-scripts中设置到package.json的bin default: console.log('Unknown script"' + script+ '".'); console.log('Perhaps you need to update react-scripts react-dev-utils/browsersHelper是一个浏览器支持的帮助utils,因为在react-scripts v2之后必须要提供一个browser list支持列表,不过我们可以在package.json