в предыдущей статьеИспользование Ant Design of React в приложении create-реагировать с Ejectв использовании
create-react-app
Создал проект React, выставил конфигурацию веб-пакета с помощью Eject и успешно внедрил ее по мере необходимости.antd
. Основное содержание этой статьи: Решениеcreate-react-app
После создания проектаless
неэффективные вопросы;antd
Внедрить по требованиюless
исходные файлы и обнаруженныеbezierEasing.less
проблема с ошибкой файла;antd
Как настроить локальные шрифты;less
использоватьcss module
Конфигурация.
прямой импортless
Стиль не работает
Создайтеtest.less
, И вApp.js
введен в
.test {
color: red;
}
// App.js
...
import './test.less'
...
<div className="test">test</div>
<Button type="primary">Button</Button>
...
Установлено, что цвет теста не вступает в силу, потому что приложение Create-React - не имеет встроенного встроенного загрузчика
Установитьless
а такжеless-loader
и измените конфигурацию веб-пакета
$ cnpm i less less-loader --save-dev
Изменить конфигурацию веб-пакета
Исправлятьwebpack.config.dev.js
а такжеwebpack.config-prod.js
Файл конфигурации, добавить меньше конфигурации файла:
// webpack.config.dev.js
...
{
test: /\.less$/,
use: [
require.resolve('style-loader'),
{
loader: require.resolve('css-loader'),
options: {
importLoaders: 1,
},
},
{
loader: require.resolve('less-loader') // compiles Less to CSS
}
],
},
...
После перезапуска проекта стиль LESS вступил в силу.
antd
стиль с использованиемless
Импорт по исходному файлу
существуетbabel-plugin-importВот такая пара описаний стиля в :
["import", { "libraryName": "antd" }]
: import js modularly
["import", { "libraryName": "antd", "style": true }]
: import js and css modularly (LESS/Sass source files)
["import", { "libraryName": "antd", "style": "css" }]
: import js and css modularly (css built files)
Измените package.json наstyle
Значение изменяется наtrue
...
"babel": {
"presets": [
"react-app"
]
],
"plugins": [
["import", { "libraryName": "antd", "libraryDirectory": "es", "style": true }]
]
}
...
После перезапуска ошибка компиляции, подсказкаbezierEasing.less
документ.bezierEasingMixin()
Ошибка метода:
Проверьте по адресу проблемы, указанному в отчете об ошибке:issues/44
Причина в том, что опция Enable Inline JavaScript устарела после less v3:меньше CSS.org/usage/#less…
Есть в основном 2 решения
- Отбросьте меньше версии ниже 3.0
- Загрузчик Less добавляет конфигурацию и включает JavaScript:
// webpack.config.dev.js
...
{
- loader: require.resolve('less-loader') // compiles Less to CSS
+ loader: require.resolve('less-loader'), // compiles Less to CSS
+ options: {
+ javascriptEnabled: true
+ }
}
опять такиnpm start
, проект можно запускать нормально.
antd
Использовать локальный шрифт iconfont
Обновленная 5 сентября 2018 года серия про дизайн муравьев открыла серию крупных обновлений в сентябрьском школьном сезоне.umiВышла версия 2.0, а вместе с ней иant design proВерсия 2.0 построена на umi 2.0. Сегодня заметил, что основным обновлением в версии 3.9.0 дизайна ant является рефакторинг значка с использованием SVG вместо предыдущего значка шрифта css. Поэтому, если вы используете ant design версии 3.9.0 или более поздней, проблем с тем, что файлы шрифтов нельзя будет найти в автономном режиме, не будет. Если вы используете дизайн ant ниже версии 3.9.0, вы можете обратиться к следующему методу, чтобы использовать iconfont в автономном режиме.
Файл iconfont по умолчанию Ant Design размещен по адресу iconfont.cn и использует адрес alicdn, предоставляемый платформой по умолчанию, к которому можно получить доступ и использовать в общедоступной сети.
Поскольку alicdn имеет ограничения на доступ к некоторым доменным именам или должен использоваться в среде интрасети, шрифты необходимо загружать локально.
Последние файлы iconfont можно найти по адресуэта ссылкаскачать.
После загрузки поместите файл шрифта вpublic/iconfont/
под дорожкой
Поскольку проект использует приложение Create-React-App для создания проекта, а стиль использования ANNDbabel-plugin-import
Спрос на стили загрузки, мы можем только принятьПользовательские темысерединаless-loader
изmodifyVars
Настройте, чтобы переопределить исходную переменную стиля.
конкретные изменения
Исправлятьwebpack.config.dev.js
а такжеwebpack.config-prod.js
конфигурационный файл
// webpack.config.dev.js
...
{
loader: require.resolve('less-loader'), // compiles Less to CSS
options: {
javascriptEnabled: true,
modifyVars: {
"icon-url": "'/public/iconfont/iconfont'"
}
}
}
Перезапустите проект и успешно внедрите локальные шрифты
должен быть в курсеwebpack.config-prod.js
в файлеicon-url
путь должен бытьpublic
Замените на путь к файлу проекта рабочей среды после упаковкиpublic
Копируйте файлы и папки прямо вbulid
под дорожкой. Использование относительного пути приведет к ошибке и не может быть скомпилировано.Я не знаю, есть ли лучший способ справиться с этим.Я надеюсь, что читатели могут предоставить лучший способ.
// webpack.config-prod.js
...
{
loader: require.resolve('less-loader'), // compiles Less to CSS
options: {
javascriptEnabled: true,
modifyVars: {
"icon-url": "'/your-project-name/iconfont/iconfont'"
}
}
}
Ввести меньше в виде модуля css
Увеличиватьcss-loader
Конфигурация
{
test: /\.less$/,
// exclude: [/node_modules/],
use: [
require.resolve('style-loader'),
{
loader: require.resolve('css-loader'),
options: {
importLoaders: 1,
+ modules: true
},
},
{
loader: require.resolve('less-loader'), // compiles Less to CSS
options: {
javascriptEnabled: true,
modifyVars: {
"icon-url": "'/public/iconfont/iconfont'"
}
}
}
],
},
ИсправлятьApp.js
, импортировано с помощью модуля css
- import './test.less'
+ import styles from './test.less'
class App extends Component {
render() {
return (
<div className="App">
- <div className="test">test</div>
+ <div className={styles.test}>test</div>
<Button type="primary">Button</Button>
</div>
);
}
}
Перезапустите проект, стиль теста, введенный модулем css, вступит в силу, но стиль кнопки antd недействителен.
Нужно изменитьwebpack.config.dev.js
, только правильноsrc
серединаless
файл открытьcss module
, немного громоздко писать сюда, должен быть способ получше.
// webpack.config.dev.js
...
{
test: /\.less$/,
use: [
require.resolve('style-loader'),
{
loader: require.resolve('css-loader'),
options: {
importLoaders: 1
},
},
{
loader: require.resolve('less-loader'), // compiles Less to CSS
options: {
javascriptEnabled: true,
modifyVars: {
"icon-url": "'/public/iconfont/iconfont'"
}
}
}
],
},
{
test: /\.less$/,
include: [/src/],
use: [
require.resolve('style-loader'),
{
loader: require.resolve('css-loader'),
options: {
importLoaders: 1,
modules: true
},
}
],
},
...
Обновление 2018-08-02, брат оставил сообщение в области комментариев, в котором говорилось, что
npm install
назад,css module
Введенный стиль недействителен. Я протестировал его сегодня, и у него есть эта проблема. Я пытался изменить указанную выше пару.less
Последовательность обработки файлов загрузчиком может решить эту проблему, но принцип не очень понятен, помогите пожалуйста братья кто понял принцип, спасибо
// webpack.config.dev.js
...
{
test: /\.less$/,
include: [/src/],
use: [
require.resolve('style-loader'),
{
loader: require.resolve('css-loader'),
options: {
importLoaders: 1,
modules: true
},
}
],
},
{
test: /\.less$/,
use: [
require.resolve('style-loader'),
{
loader: require.resolve('css-loader'),
options: {
importLoaders: 1
},
},
{
loader: require.resolve('less-loader'), // compiles Less to CSS
options: {
javascriptEnabled: true,
modifyVars: {
"icon-url": "'/public/iconfont/iconfont'"
}
}
}
],
},
...
Суммировать
Эта статья находится вeject
изcreate-react-app
На основе проекта, внедряется по требованиюantd
, столкнулся сless
Несколько проблем с : решеноless
Проблема в том, что файл не вступает в силу, среда интрасети использует локальнуюiconfont
конфигурация,css module
способ конфигурации. В этой статье все еще есть некоторые методы настройки, которые не оптимальны, надеюсь, вы сможете дать лучшие решения.
Я начинаю React недавно, и я собираюсь записать свой собственный процесс обучения и пошагового выполнения. Следующая статья должна бытьdva
использование.