Ionic3: лучший способ импортировать css из node_modules
Я пытаюсь импортировать.css из полного календарного пакета.
Во-первых, я создал новый компонент my-calendar (html, scss, ts).
Затем я попробовал 3 разных способа, но для меня работал только последний:
-
Ссылка на файл напрямую, как указано в документации, в index.html (он не работает, потому что ссылка на node_modules теряется при создании проекта)
<link href="node_modules/fullcalendar/dist/fullcalendar.min.css" rel="stylesheet">
-
Добавление @import "~fullcalendar/dist/fullcalendar.min.css";
в my-calendar.scss. Если я не ошибаюсь, это должно добавить стиль в main.css, когда проект строится (не работает)
-
Создайте собственную конфигурацию копирования (copy.config.js)
module.exports = {
...
copyFullCalendar: {
src: ['{{ROOT}}/node_modules/fullcalendar/dist/fullcalendar.min.css'],
dest: '{{BUILD}}'
}
}
и добавление @import "fullcalendar.min.css"
; в мой календарь.scss
ОБНОВИТЬ:
и добавление @import "fullcalendar";
в мой календарь.scss
во избежание ошибок компилятора при использовании ионной сборки --aot --minifycss --minifyjs
Я был бы признателен, если бы кто-нибудь мог прояснить лучший способ и объяснить, если я неправильно понял какую-то концепцию.
PS: Помните, что я работаю с Ionic3, и я не использую Angular CLI.
Ответы
Ответ 1
третий метод будет лучшим способом реализации, но это может быть сделано по-другому более похоже на ионный. Вы должны использовать includePaths
при настройке настраиваемого пути, поскольку мы имеем дело с пользовательским css, добавьте sass.config.js
в локальную папку проекта, где мы настраиваем пользовательские includePaths, подобные этому
includePaths: [
....
'node_modules/ap-angular2-fullcalendar'
],
В сценариях package.json
включить настраиваемый файл конфигурации css, например:
"scripts": {
.....
"ionic:serve": "ionic-app-scripts serve -s ./config/sass.config.js"
},
Единственная проблема с этой реализацией - когда вы обновляете ionic-app-scripts
с помощью sass.config.js
ionic-app-scripts
вы должны сравнить файл sass.config.js
с родным файлом с локальным файлом и проверить, что что-то изменилось.
Это хлопотный метод, и проблема была поднята в Гитубе, но, к сожалению, они закрыли проблему со следующим обоснованием
Конфигурации расширены, поэтому включайте только те поля, которые вы меняете. Все остальное наследует значения по умолчанию.
Ответ 2
Начиная с @ionic/app-scripts: 3.2.0, кажется, вам все равно нужно @include FILE;
где-нибудь Смотрите эту закрытую проблему в скрипте приложения github
Я обнаружил, что с "Ionic Framework: ionic-angular 3.9.2" у вас есть два варианта: вставьте свой импорт в src/theme/variables.scss или src/app/app.scss.
Например, в переменных.scss
/* some declarations here */
@import 'insrctest';/*file sits in src/test/insrctest.scss*/
И в моем custom.config.js
includePaths: [
'node_modules/ionic-angular/themes',
'node_modules/ionicons/dist/scss',
'node_modules/ionic-angular/fonts',
'./src/test', /* when the import above gets called, node-sass will look in here */