On my ruby project when I try to run gulp (gulp server, gulp watch) I have the following error :
Users/workspace/website2019/gulpfile.babel.js:1
import del from 'del';
^^^^^^
SyntaxError: Cannot use import statement outside a module
I don't get how can I fix it, if someone could help me please,
you use babel transpilation with gulp because of the file gulpfile.babel.js For this reason you need to install babel. according to the documentation you need #babel/register and #babel/preset-env for transpiling your import syntax.
So run the following command in your project folder
npm install --save-dev #babel/core #babel/register
Afterwards create the babel configuration file .babelrc in the root folder and add the following lines to it
{
"presets": [
[
"#babel/preset-env",
{
"targets": {
"node": "current"
}
}
]
]
}
make sure you have this line in package.json
"type": "module"
I am building a webpage using ASP.NET Core v2 and would like to use font-awesome.
First let me say that I have tried several things. like installing Bower from NPM, installing font-awesome from NPM, installing font-awesome from Bower packages in VS but nothing seem to work.
can someone please provide the correct way to install font-awesome, (preferred without using a lot of console commands or manual copying of files.)
This is what my depedencises currently looks like
I would recommend using LibMan for this (Short documentation how to use it).
I wrote it manually, bet you could add it through "Add -> Client-Side Library". Here is mine libman.json
{
"version": "1.0",
"defaultProvider": "cdnjs",
"libraries": [
{
"library": "font-awesome#4.7.0",
"destination": "wwwroot/lib/font-awesome",
"files": [
"css/font-awesome.min.css",
"fonts/fontawesome-webfont.eot",
"fonts/fontawesome-webfont.svg",
"fonts/fontawesome-webfont.ttf",
"fonts/fontawesome-webfont.woff",
"fonts/fontawesome-webfont.woff2",
"fonts/FontAwesome.otf"
]
}
]
}
Bower is going away. NuGet now focus on .NET packages so your best bet to get font-awesome is via NPM.
1.Download NPM
Make sure you have the latest nodejs installed. Navigate to https://nodejs.org/en/ and download the LTS version.
To check the version of node as well as npm installed on your machine:
Right click your project in Visual Studio
Select "Open Command Line"
Select "Default (Cmd)" (or whatever command prompt you want to use)
Run command node -v and npm -v
2. Add package.json
You need to have the npm configuration file to your project. This configuration file lists out all your packages and is used by npm to restore packages when it needs to.
To add the npm configuration file:
Right click your project in visual studio
Select "Add" -> "New Item"
Select "ASP.NET Core" on the left and search "npm" on the search bar on the top right
Hit "Add"
3. Install font-awesome (and others)
Open package.json and under devDependencies, just by typing "font-awesome":, it should automatically give you a list of available versions you can pick. Pick a version you like.
By saving this package.json file, the npm will download the libraries listed into the hidden node_modules folder under your project.
4. Copy files to wwwroot
In ASP.NET Core MVC applications, if you want to use static contents like styles and javascript files, beside you need to enable app.UseStaticFiles(); in the Startup.cs, you also need to copy the files to the wwwroot folder. By default, the content, for example, in node_modules are not serviceable to your application.
You can of course manually cope the files you want into wwwroot folder. But then you will have to replace the files whenever there are new versions come out.
To properly copy the files, we need to use 3rd party tooling!
BundlerMinifier is a great tool you can use to bundle files you want and output them to the directories you want. It uses similar configuration file called bundleconfig.json:
But this tool doesn't work well with file types other than .css and .js. There is also an issue of relative url to the font-awesome fonts folder because the font-awesome style uses url(); (setting "adjustRelativePaths": false doesn't always work).
5. Create Gulp tasks
To properly move font-awesome files and fonts to wwwroot folder, I can use gulp to set up tasks I can run before build, after build, etc:
5.1. Install gulp (and rimraf, the unix command rm -rf)
Go to package.json and type gup and rimraf in the dependency list. Save the file.
5.2. Add gulpfile.js to your project and define tasks
I basically need to create a task to move font-awesome to wwwroot/libs folder, and create another task to do the reverse for cleanup. I omitted other tasks not related to font-awesome.
5.2.1 UPDATE for Gulp +v4.0:
gulp from gulp v4.0 Use gulp.series() to combine multiple tasks
so if you are using Gulp +v4.0 you should update your code as below:
gulp.task('default', gulp.series(
'copy:font-awsome'
));
gulp.task('clean', gulp.series(
'clean:font-awesome'
));
5.3 Run tasks
After you have setup the gulpfile.js, you should be able to see the tasks listed in "Task Runner Explorer". If you don't have that window in Visual Studio, Go to "View" -> "Other Windows".
You can manually run any task by right clicking it and hit "Run". Or you can have it run automatically when before build, after build, clean or project open.
After you setup the bindings, a header would be added to the gulpfile.js:
Now save the gulpfile.js file and build your project. Your font-awesome files and fonts should be automatically moved to the wwwroot and ready to use.
I am using ASP.NET Core 2.0.8, on Windows 10, and just struggled to get FA in to my project too. I was able to add it to NPM by adding it to the package.json (as others have mentioned) under dependencies, like this:
{
"version": "1.0.0",
"name": "asp.net",
"private": true,
"devDependencies": {},
"dependencies": {
"bootstrap": "^4.1.1",
"font-awesome": "4.7.0",
"jquery": "^3.3.1",
"popper.js": "^1.14.3"
}
}
Unfortunately, although it restored the package, it didn't deploy the css files where I had expected, so that I could reference them. I don't believe the following is anything like the "correct" way to do it (still learning!), however, it worked for me.
In Solution Explorer:
Navigate to Dependencies > npm
Right-Click font-awesome > Open in File Explorer
Go in to the css folder
Copy the .css files
Back in Visual Studio, in Solution Explorer, navigate to wwwroot
Right-Click css > Open in File Explorer
Paste in the files
You can now drag these in to your project to make references to them, and start using Font Awesome, like this:
_Layout.cshtml:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>#ViewData["Title"] websiteTitle</title>
<environment include="Development">
<link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.css" />
<link rel="stylesheet" href="~/css/site.css" />
<link href="~/css/font-awesome.css" rel="stylesheet" />
</environment>
<environment exclude="Development">
<link rel="stylesheet" href="https://ajax.aspnetcdn.com/ajax/bootstrap/4.1.1/css/bootstrap.min.css"
asp-fallback-href="~/lib/bootstrap/dist/css/bootstrap.min.css"
asp-fallback-test-class="sr-only" asp-fallback-test-property="position" asp-fallback-test-value="absolute" />
<link rel="stylesheet" href="~/css/site.min.css" asp-append-version="true" />
</environment>
</head>
Hope this is of some help to anyone stopping by like I was.
Go to package.json
add the following tag "font-awesome": "^4.7.0" in dependencies section
Eg :-
{
"name": "imsy-app",
"version": "0.0.0",
"license": "MIT",
"scripts": {
"ng": "ng",
"start": "ng serve",
"build": "ng build --prod",
"test": "ng test",
"lint": "ng lint",
"e2e": "ng e2e"
},
"private": true,
"dependencies": {
"#angular/animations": "^5.2.0",
"#angular/common": "^5.2.0",
"#angular/compiler": "^5.2.0",
"#angular/core": "^5.2.0",
"#angular/forms": "^5.2.0",
"#angular/http": "^5.2.0",
"#angular/platform-browser": "^5.2.0",
"#angular/platform-browser-dynamic": "^5.2.0",
"#angular/router": "^5.2.0",
"angular2-moment": "^1.9.0",
"core-js": "^2.4.1",
"ng2-toasty": "^4.0.3",
"ng5-breadcrumb": "0.0.6",
"rxjs": "^5.5.6",
"zone.js": "^0.8.20",
"font-awesome": "^4.7.0"
},
"devDependencies": {
"#angular/cli": "1.6.6",
"#angular/compiler-cli": "^5.2.0",
"#angular/language-service": "^5.2.0",
"typescript": "~2.5.3"
}
}
As a recommendation from Microsoft
The recommended way to install client-side dependencies like Bootstrap
in ASP.NET Core is via Bower (using bower.json)
Open the bower.json file and add font-awesome to the dependencies
{
"name": "ASP.NET",
"private": true,
"dependencies": {
"Font-Awesome": "4.3.0"
}
}
Open the .bowerrc file under bower.json, The directory property is set to wwwroot/lib which indicates the location Bower will install the package assets.
{
"directory": "wwwroot/lib"
}
Now you can refer font-awesome as below
<link href="/lib/font-awesome/css/font-awesome.css" rel="stylesheet" />
The easiest way to get started with Font Awesome is to add a reference to it, using its public content delivery network (CDN) location:
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css">
For more details:
https://learn.microsoft.com/en-us/aspnet/core/client-side/bower
No coding is necessary using this approach in Visual Studio.
Select the web project in Solution explorer and right click and choose Add and then Client-Side Library. This will also add the necessary content to libman.json file.
Choose Unpkg and then search for : Font Awesome.
Just select version 4.7 like this for example (Click on picture to zoom in):
After that you can add icons like in this example in a Razor file:
<button class="btn btn-success col-md-3 offset-3"><i class="fa-cloud-download fa"></i> Load data</button>
Note that we use 'fa' and then we can add the icons with CSS classes starting with 'fa-'.
Easy !
Disclaimer: This might work best in VS 2019, not VS 2017..
My issue is JSPM / SystemJS manually inserting CSS dependencies (namely Angular Material's CSS) when I have a different pipeline for those (Gulp + SASS).
How can I tell JSPM to not import CSS files or interpret CSS dependencies in any way? I found only this discussion - https://github.com/jspm/jspm-cli/issues/791 - but it did not help me at all.
Seems that JSPM prefers local package overrides rather than turning off CSS features completely.
The culprit of my original issue is Angular Material's package.json, which contains the following JSPM configuration:
"shim": {
"angular-material": {
"deps": [ "./angular-material.css!" ]
}
}
So what really solved my issue was to override that configuration:
jspm install angular-material -o '{ shim: {} }'
I would like to use https://github.com/MrRio/jsPDF in my ember project.
I wanted to import jsPDF as dependency, therefore I started this way:
bower install git#github.com:MrRio/jsPDF.git --save
Unfortunately, I cannot install files from plugins directory, because "plugins/*" directory is ignored in bower.json file.
I have tried overriding it this way, but without success.
"overrides": {
"jspdf": {
"ignore": [
"**/.*",
"libs",
"CNAME",
"jspdf.js",
"examples/jspdf.PLUGINTEMPLATE.js",
"todo.txt",
"wscript.py",
"build.sh",
"test",
"tools"
]
}
}
Could you please help me?
I just added a jsPDF plugins package to bower.
You can add all the plugins via
bower install jsPDF-plugins --save
I am trying to use trigger.io together with yeoman.
I use yeoman for the whole build cycle (scaffolding angularjs application / testing /..)
and trigger.io for the deployment.
Trigger.io generates all in 'src' and yeoman all in 'app' directory.
Is there anyway to make Trigger.io write to an 'app' and not to a 'src' directory?
Edit this seems to work but not very feasible since it requires keeping track of new directories / files generated by yeoman:
ln -s app/index.html index.html
ln -s app/styles styles
ln -s app/scripts scripts
: continue for anything relevant
I ended up symlinking dist to src because we needed Yeoman to compile out SCSS and CoffeScript files. The bummer here is yeoman server cannot be running when you yeoman build to create the dist directory. Additionally bummerish is when you yeoman server again, it cleans up the dist directory.
I plan on working on creating a yeoman generator for generator for Trigger and also add some grunt tasks that mimic the Rakefile tasks I created when we were testing and developing with Sinatra (e.g. yeoman simulator, yeoman device, yeoman testflight).
edit: I've added a few tasks directly to my gruntfile.js for now. I added grunt-contrib-copy and added the following subtasks.
copy: {
app: {
files: {
"src/": "app/**", // core app files
},
},
compass: {
files: {
"src/styles/": "temp/styles/**", // drop in the compiled coffeescript
}
},
coffee: {
files: {
"src/scripts/": "temp/scripts/**" // drop in the compiled scss
}
}
},
I added those tasks to the appropriate watch commands and added a new watch to watch the app dir.
watch: {
coffee: {
files: 'app/scripts/**/*.coffee',
tasks: 'coffee copy:coffee reload'
},
compass: {
files: [
'app/styles/**/*.{scss,sass}'
],
tasks: 'compass copy:compass reload'
},
app: {
files: [
'app/**/*.{html,png,json,css,js}'
],
tasks: 'copy:app'
},
}
Now yeoman server, which invokes yeoman watch, keeps src up to date.
I also brought in grunt-shell to do the following.
shell: {
forge_build: {
command: 'forge build ios 2>&1 | tee output',
stdout: true
},
forge_run_device: {
command: 'forge run ios --ios.device device',
stdout: true
},
forge_run: {
command: 'forge run ios',
stdout: true
}
}
And create some tasks like:
grunt.registerTask("sim", 'copy shell:forge_build shell:forge_run');
grunt.registerTask("device", 'copy shell:forge_build shell:forge_run_device');
I'm not entirely happy with it, but it lets me keep running yeoman server and drop to a console elsewhere and run yeoman device to bring it up in the device. it also keeps the src directory in a place where it can be checked in.
Eventually I'll move this to a yeoman plug in and add some more specific build tasks to clean up the src dir for the appropriate target (e.g. iOS, Android) to keep dir size small.
edit: I've created grunt-forge to help run forge from inside Yeoman. I've also blogged a bit about creating a more terse output for `forge.