我正在尝试在我的离子3项目中安装字体令人陶醉。我使用了命令:
npm install font-awesome --save
这是package.json文件的内容
{
"name": "ionic-hello-world",
"version": "0.0.0",
"author": "Ionic Framework",
"homepage": "http://ionicframework.com/",
"private": true,
"scripts": {
"clean": "ionic-app-scripts clean",
"build": "ionic-app-scripts build",
"lint": "ionic-app-scripts lint",
"ionic:build": "ionic-app-scripts build",
"ionic:serve": "ionic-app-scripts serve"
},
"config": {
"ionic_copy": "./config/copy.config.js"
},
"dependencies": {
"@angular/common": "4.1.3",
"@angular/compiler": "4.1.3",
"@angular/compiler-cli": "4.1.3",
"@angular/core": "4.1.3",
"@angular/forms": "4.1.3",
"@angular/http": "4.1.3",
"@angular/platform-browser": "4.1.3",
"@angular/platform-browser-dynamic": "4.1.3",
"@ionic-native/camera": "^3.13.1",
"@ionic-native/core": "3.10.2",
"@ionic-native/network": "^4.2.1",
"@ionic-native/splash-screen": "3.10.2",
"@ionic-native/status-bar": "3.10.2",
"@ionic/storage": "2.0.1",
"angularfire2": "^4.0.0-rc0",
"firebase": "^3.9.0",
"font-awesome": "^4.7.0",
"ionic-angular": "3.4.2",
"ionicons": "3.0.0",
"promise-polyfill": "^6.0.2",
"rxjs": "5.4.0",
"sw-toolbox": "3.6.0",
"typings": "^2.1.1",
"zone.js": "0.8.12"
},
"devDependencies": {
"@ionic/app-scripts": "1.3.7",
"typescript": "2.3.3"
},
"cordovaPlugins": [
"cordova-plugin-whitelist",
"cordova-plugin-console",
"cordova-plugin-statusbar",
"cordova-plugin-device",
"cordova-plugin-splashscreen",
"ionic-plugin-keyboard"
],
"cordovaPlatforms": [],
"description": "loginApp: An Ionic project"
}
安装后,我在项目文件夹的根部创建了一个名为 config 的目录。在该目录中,我添加了文件 copy.config.js 从node_modules/ionic/ionic/app-scripts/config/copy.config.js复制,我在其中添加了这两个复制任务:
copyFontawesomeFonts: {
src: ['{{ROOT}}/node_modules/font-awesome/fonts/**/*'],
dest: '{{WWW}}/assets/fonts'
},
copyFontawesomeCss: {
src: ['{{ROOT}}/node_modules/font-awesome/css/font-awesome.min.css'],
dest: '{{WWW}}/assets/css'
},
,但不幸的是,副本不是制作的,所有必要的文件均未复制到资产/字体和资产/CSS中。我在资产和字体文件夹中手动复制了这些文件,我可以在项目中使用字体Awesome,但是我想知道为什么复制任务不起作用。
任何帮助都会有用。谢谢。
安装字体很棒
这很容易:npm install font-awesome --save --save-exact
配置离子以包含字体很棒使我们的应用中的字体很棒并不难……我们只需要:
- 配置构建以复制字体很棒的字体
- 将构建配置为包括字体真棒路径
- 使您的项目可以使用字体真棒样式
配置构建
离子构建系统可以很容易地配置。如果您需要更多地了解它,则可以在此处找到信息
1。配置复制任务与其他所有任务一样,离子复制任务是使用JSON对象配置的。此JSON对象的每个属性都是复制子任务。对于每个子任务,都有一个源src
,即目录和文件数组,而目标dest,
是您要复制所有内容的途径。
某些占位符可以用作root目录的{{ROOT}}
,而目标目录则可以用作{{WWW}}
。
这是我出色的config/copy.config.js
文件:
// New copy task for font files
module.exports = {
copyFontAwesome: {
src: ['{{ROOT}}/node_modules/font-awesome/fonts/**/*'],
dest: '{{WWW}}/assets/fonts'
}
};
添加与默认copyfonts名称不同的属性只允许注意FA字体。离子建筑系统自动添加默认配置。
2。配置SASS任务SASS包括路径是使用SASS配置的includePaths
属性配置的。
与:
添加config/sass.config.js
// Adding Font Awesome to includePaths
module.exports = {
includePaths: [
'node_modules/ionic-angular/themes',
'node_modules/ionicons/dist/scss',
'node_modules/ionic-angular/fonts',
'node_modules/font-awesome/scss'
]
};
您可以看到,我正在覆盖includePaths
属性。如果您希望SASS任务正常工作,则需要复制默认配置。
启用自定义配置有几种启用自定义配置的方法,我选择将其添加到
package.json config
属性中。"config": { "ionic_copy": "./config/copy.config.js", "ionic_sass": "./config/sass.config.js" }
使字体很棒可用 要使用Avesome,我们需要导入它。现在很简单,因为两行代码!
在src/theme/variables.scss
文件末尾添加下面的代码。
// Font Awesome
$fa-font-path: $font-path;
@import "font-awesome";
默认情况下,$fa-font-path
等于../fonts
。我们配置了字体文件要复制到../assets/fonts
,即离子默认字体路径
使用字体很棒
用法
<!-- basic usage -->
<fa-icon name="camera-retro"></fa-icon>
<!-- basic usage with color -->
<fa-icon name="camera-retro" color="danger"></fa-icon>
<!-- larger icons -->
<fa-icon name="camera-retro" size="4x"></fa-icon>
<!-- fixed width icons -->
<fa-icon name="camera-retro" fixed-width></fa-icon>
<!-- dynamic value -->
<fa-icon [name]="icon"></fa-icon>
<!-- buttons -->
<button ion-button icon-left>
<fa-icon name="group"></fa-icon>
people
</button>
更多了解,请在此处阅读此链接
我也遇到了同样的问题,但通过以下这些步骤解决了问题
- 运行以下命令=>
npm install --save font-awesome
-
打开您的 index.html src 文件夹和paste fontawesome.min.css
<link href="assets/css/font-awesome.min.css" rel="stylesheet"/>
- 在您的应用程序root上创建一个新的文件夹名称脚本,所有root File都位于
- 创建一个具有名称 custom-libs.js 的新JS文件
-
然后将下面的代码粘贴到该文件
const existingConfig = require('../node_modules/@ionic/app-scripts/config/copy.config'); module.exports = Object.assign(existingConfig, { copyFontawesomeFonts: { src: ['{{ROOT}}/node_modules/font-awesome/fonts/**/*'], dest: '{{WWW}}/assets/fonts' }, copyFontawesomeCss: { src: ['{{ROOT}}/node_modules/font-awesome/css/font-awesome.min.css'], dest: '{{WWW}}/assets/css' }});
-
最后但不是最小的一步,我们需要告诉ionic我们正在使用自定义复制JS,因此打开 package.json 文件,替换下面的代码
" config":{ " ionic_copy":" ./scripts/custom-libs.js" }
现在,我们很高兴运行ionic serve
命令并查看您的更改
您需要将文件复制到构建文件夹,然后从index.html
:
copyFontawesomeFonts: {
src: ['{{ROOT}}/node_modules/font-awesome/fonts/**/*'],
dest: '{{BUILD}}/assets/fonts'
},
copyFontawesomeCss: {
src: ['{{ROOT}}/node_modules/font-awesome/css/font-awesome.min.css'],
dest: '{{BUILD}}/assets/css'
},
in index.html 添加以下行:
<head>
...
<link rel="stylesheet" href="build/assets/css/font-awesome.min.css">
...
</head>
在该目录中,我添加了文件copy.config.js,从node_modules/ionic/ionic/app-scripts/config/config/copy.config.js复制,其中我添加了这两个复制任务
>
清洁方法是制作自己的文件并将您的自定义任务附加到原始配置。这样,当您更新应用脚本时,您不必担心太多。
let originalConfig = require('@ionic/app-scripts/config/copy.config');
module.exports = Object.assign({}, originalConfig, {
copyFontawesomeFonts: {
src: ['{{ROOT}}/node_modules/font-awesome/fonts/**/*'],
dest: '{{WWW}}/assets/fonts'
},
copyFontawesomeCss: {
src: ['{{ROOT}}/node_modules/font-awesome/css/font-awesome.min.css'],
dest: '{{WWW}}/assets/css'
},
});
另外,您需要在package.json中指定自定义配置文件。这是您的步骤中缺少的。
"config": {
"ionic_copy": "./config/custom.copy.js"
},
update
如果您使用的是Font-Awesome V5.x,则可以使用Angular-Fondawesome软件包并直接在项目中导入FontAwesomeModule
。
npm i @fortawesome/fontawesome-svg-core --save
npm i @fortawesome/free-solid-svg-icons --save //or any other category
npm i @fortawesome/angular-fontawesome --save
文档此处
这就是我解决问题的方式:
1:运行npm install font-awesome --save
(本地安装字体很棒)
2:打开项目的globals.scss
,即src/global.scss
。并粘贴以下行:
$fa-font-path : "../node_modules/font-awesome/fonts";
@import "../node_modules/font-awesome/scss/font-awesome.scss";
3:您的global.scss文件之后应该看起来像这样:
// http://ionicframework.com/docs/theming/"
$fa-font-path : "../node_modules/font-awesome/fonts";
@import "../node_modules/font-awesome/scss/font-awesome.scss";
@import "~@ionic/angular/css/normalize.css";
@import "~@ionic/angular/css/structure.css";
@import "~@ionic/angular/css/typography.css";
@import "~@ionic/angular/css/colors.css";
@import "~@ionic/angular/css/padding.css";
@import "~@ionic/angular/css/float-elements.css";
@import "~@ionic/angular/css/text-alignment.css";
@import "~@ionic/angular/css/text-transformation.css";
@import "~@ionic/angular/css/flex-utils.css";
尝试使用此 <i primary class="fa fa-cart-plus fa-lg"></i>
我以不同的方式安装了字体。
步骤1)添加到node_modules/@ionic/app-scripts/config/sass.config.js
includePaths: [
'node_modules/ionic-angular/themes',
'node_modules/ionicons/dist/scss',
'node_modules/ionic-angular/fonts',
'node_modules/font-awesome/scss'
],
步骤2)添加到变量。Scss
@import "font-awesome";
步骤3)复制所需的字体真棒字体以构建区域。
package.json
"config": {
"ionic_copy": "./copy-from.js"
},
copy-from.js
var fs = require('fs-extra')
// we will add config later here, right now the translation files are not being copied even though
// they are in assets.
var dependencies = [
['node_modules/font-awesome/fonts/', 'www/fonts']
];
console.log('Executing application custom copies...', dependencies);
dependencies.forEach(function (value) {
fs.copy(value[0], value[1], function (err) {
if (err) return console.error(err)
console.log("success!")
});
});
此时可能有一种更好的方法来执行步骤3。