you can add the script reference to angular.json like this as example include jquery library
"scripts": [
{
"input": "node_modules/jquery/dist/jquery.min.js",
"inject": false,
"bundleName": "jquery"
}
]
then set inject to false will not injected the script to index.htm, finaly we just set a name for bundleName this way the script will not bundle with other script file and will be standalone file ,
and now you can add the script tag to the header tag
update the index.html and include the script tag at the header
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Portfolio</title>
<base href="/">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" type="image/x-icon" href="favicon.ico">
<script src="jquery.js"></script> <!-- -->
</head>
<body>
<app-root></app-root>
</body>
</html>
Answer from Muhammed Albarmavi on Stack Overflowyou can add the script reference to angular.json like this as example include jquery library
"scripts": [
{
"input": "node_modules/jquery/dist/jquery.min.js",
"inject": false,
"bundleName": "jquery"
}
]
then set inject to false will not injected the script to index.htm, finaly we just set a name for bundleName this way the script will not bundle with other script file and will be standalone file ,
and now you can add the script tag to the header tag
update the index.html and include the script tag at the header
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Portfolio</title>
<base href="/">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" type="image/x-icon" href="favicon.ico">
<script src="jquery.js"></script> <!-- -->
</head>
<body>
<app-root></app-root>
</body>
</html>
You can use a service to inject it in the head.
This answer can help you : https://stackoverflow.com/a/44016611/8573150
Scripts not loading from angular.json file
script file is not working by adding on angular.json file inside script array
Angular Cli Webpack, How to add or bundle external js files?
Should scripts be put into angular.json or into index.html? - Stack Overflow
Videos
Last tested using angular-cli 11.x.x with Angular 11.x.x
This can be accomplished using scripts:[] in angular.json.
{
"project": {
"version": "1.0.0",
"name": "my-project"
},
"apps": [
{
"root": "src",
"outDir": "dist",
"assets": ["assets"],
"index": "index.html",
"main": "main.ts",
"polyfills": "polyfills.ts",
"test": "test.ts",
"tsconfig": "tsconfig.json",
"prefix": "app",
"mobile": false,
"styles": [
"styles.css"
],
"scripts": [
"../node_modules/jquery/dist/jquery.js"
],
"environments": {
"source": "environments/environment.ts",
"dev": "environments/environment.ts",
"prod": "environments/environment.prod.ts"
}
}
],
"addons": [],
"packages": [],
"e2e": {
"protractor": {
"config": "./protractor.conf.js"
}
},
"test": {
"karma": {
"config": "./karma.conf.js"
}
},
"defaults": {
"styleExt": "css",
"prefixInterfaces": false
}
}
Note: As the documentation suggests in the global library installation: if you change the value of your styles (or scripts!) property, then:
Restart ng serve if you're running it,
..to see the scripts executed in a **globalcontext via the scripts.bundle.js file.
Note: As discussed in the comments below. JS libs that support UMD modules via es6 imports such as jQuery can also be imported into your typescript files using the es6 import syntax. For example: import $ from 'jquery';.
There is a subtle difference to using scripts:[] then to adding something to the <head> with <script>. Scripts from scripts:[] get added to the scripts.bundle.js that gets always loaded in the body tag and will thus be loaded AFTER scripts in <head>. Thus if script loading order matters (i.e. you need to load a global polyfill), then your only option is to manually copy scripts to a folder (e.g. with a npm script) and add this folder as an asset to .angular-cli.json.
So if you really depend on something being loaded before angular itself (Option A), then you need to copy it manually to a folder that will be included in the angular build and then you can load it manually with a <script> in <head>.
Thus, for achieving option a you have to:
- create a
vendorfolder insrc/ - add this folder as an asset to
.angular-cli.json:
"assets": [
"assets",
"favicon.ico",
"vendor"
]
copy your vendor script
node_modules/some_package/somejs.jstovendorload it manually in
index.html:<head> <script src="vendor/some_package/somejs.js"> </head>
However most of the time you only need this approach for packages, that need to be available globally, before everything else (i.e. certain polyfills). Kris' answer holds true for Option B and you get the benefit of the webpack build (Minification, Hashes, ...).
However if your scripts need not be globally available and if they are module-ready you can import them in src/polyfills.ts or even better import them only when you need them in your specific components.
Making scripts globally available via scripts:[] or via manually loading them brings it own set of problems and should really only be used, when it is absolutely necessary.
I am an Angular newbie, sorry if this is a very basic question. Unfortunately I could not find any help on the web.
This is my Windows 10 pc configuration: Angular CLI: 17.2.3 / Node: 20.11.1
I am trying to integrate an audio player into my Angular app. No problem with the css file, I have managed to merge it to sytles.css. The problem is with the player's js file. How do I add it to my app? Please be as simple as you can, a step-by-step process would be much appreciated.
Thanks for your help.
Hi all, I wanted to reach out and see what the best possible way to add togetherjs to my angular app. The documentation states to add a script tag to the application, how would this work with angular?
Javascript Snippet:
<script src="https://togetherjs.com/togetherjs-min.js"></script>
Html Button :
<button onclick="TogetherJS(this); return false;">Start TogetherJS</button>
Thanks in advance!
Hello Angular community,
I'm currently working on an Angular project where I have an existing HTML, CSS layout, and a JavaScript file that handles various click events, such as toggling a hamburger menu and more. My goal is to seamlessly integrate this JavaScript file into my Angular project without the need to convert each behavior to fit Angular's structure.
Here's what I've done so far:
-
I created a file called ` script.js ` and moved all the JavaScript code into it.
-
I also created separate files for jQuery and included the necessary scripts. Note that these files are required as the `script.js` file utilizes jQuery.
-
I added references to these files in the ` angular.json` file, under the ` scripts ` key of the ` build` section.
-
I'm facing issues as the provided scripts are not running. Even a simple script like ` alert('js')` doesn't seem to work. I've noticed that the script is injected into the page when I inspect it using the developer tools, but it's not executing.
Thank you in advance for your help!