npm i node-sass sass-loader -D
npm i react-dom react-router -S
/* package.json */
"scripts": {
"start": "react-app-rewired start",
"build": "react-app-rewired build",
"test": "react-app-rewired test",
"eject": "react-scripts eject"
},
于是我yarn eject(npm run eject)了一下,报错了
Remove untracked files, stash or commit any changes, and try again.
error Command failed with exit code 1.
意思是说兄弟你得先
git add .
git commit -m 'eject after commit'
但是npm run eject是不可逆的,因为不可逆,如果后续的create-react-app更新了并添加了很多不错的功能,你想应用到你的项目中,本来你可以通过更新 create-react-app版本来实现,现在就不行了。
那怎么办呢,来看看ant.design,使用 craco (一个对 create-react-app 进行自定义配置的社区解决方案)。于是我们安装 craco 并修改 package.json 里的 scripts 属性。
$ yarn add @craco/craco
/* package.json */
"scripts": {
- "start": "react-scripts start",
- "build": "react-scripts build",
- "test": "react-scripts test",
+ "start": "craco start",
+ "build": "craco build",
+ "test": "craco test",
}
然后在项目根目录创建一个 craco.config.js 用于修改默认配置。来简单配置一下craco.config.js 文件
'use strict';
const path = require('path');
const fs = require('fs');
module.exports = {
webpack: {
alias: {
'@images': path.resolve(__dirname, 'src/assets/images'),
'@fonts': path.resolve(__dirname, 'src/assets/fonts'),
'@videos': path.resolve(__dirname, 'src/assets/videos'),
},
},
};
然后yarn start狂奔吧。我经常有这种想法,不管我做什么事,总有些莫名其妙的问题等着我,非要摧残一下我让我唱征服,果然报错了:
node_modules/autoprefixer/node_modules/kleur' do not define a valid './colors' target
Stack Overflow大法教我install latest version of autoprefixer,于是:
npm install autoprefixer@9.8.0
yarn start一把,好了编译通过了,老夫悬着的心终于归位了。再回到我久违的header组件内
/* 引入svg图片 */
import logo from '@images/logo.svg';
/* 调用 */
<img className="logo" alt="" width="150" height="40" src={ logo } />
ok,logo图片出来了,我该去跳别的坑了。
参考资料: