Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to async bundles through angular CLI JSON and angular CLI JSON info

Two Angular 2 angular-cli.json questions here:

  1. after running 'ng build --prod' I can go into my index.html file in the newly created dist folder and add the 'async' attribute to the bundled script tags to keep them from being blocking. this helps with website speed but sporadically crashes the site. is there an option in the angular-cli.json that would add this for me during the build in a better way?

i ran my site through google's test my website and the only thing i have left to fix is Eliminate render-blocking JavaScript and CSS in above-the-fold content

below is a the more specific result i get from https://developers.google.com/speed/pagespeed/insights/

Eliminate render-blocking JavaScript and CSS in above-the-fold content

Your page has 4 blocking script resources and 1 blocking CSS resources. This causes a delay in rendering your page. None of the above-the-fold content on your page could be rendered without waiting for the following resources to load. Try to defer or asynchronously load blocking resources, or inline the critical portions of those resources directly in the HTML. Remove render-blocking JavaScript:

*****.com/inline.e93ce34d30ab58073e62.bundle.js *****.com/scripts.68b893062974958fa7b3.bundle.js *****.com/vendor.4f05ee5669648be9602e.bundle.js *****.com/main.2d50b916b073e7fba148.bundle.js Optimize CSS Delivery of the following: *****.com/styles.c9d2a891e3814f5a5ff6.bundle.css

  1. Where is a resource for explaining every detail of how the angular-cli.json works? I'm having trouble finding good information on it.
like image 654
russiansummer Avatar asked Mar 04 '17 00:03

russiansummer


People also ask

What is the use of Angular CLI json file?

A file named angular. json at the root level of an Angular workspace provides workspace-wide and project-specific configuration defaults for build and development tools provided by the Angular CLI.

What is the use of Angular json and package json?

It gives you a Workspace and libraries. You can use it to change the details of your project, including the name and version. Package. JSON, on the other hand, holds all of the Metadata related to your project.

Where is Angular CLI json located?

The angular-cli. json should be located in the root folder of the project.

What contains Angular json?

Every angular project has an “angular. json” file. We all understand that this file is very important. This file contains the settings of the Angular project.


1 Answers

You can achieve this by 'ejecting' your app and using HTML WEBPACK PLUGIN and its extension plugin script-ext-html-webpack-plugin:

  1. run ng eject -prod. This command will expose webpack.config.js file in your root directory. (to 'uneject' your app again see my another answer)

  2. Run npm install in order to install webpack loaders

  3. Install two new plugins:

    npm i html-webpack-plugin script-ext-html-webpack-plugin -D
    
  4. In your exposed webpack.config.js file edit plugin entry and add two plugins in this order:

    plugins: [
      new HtmlWebpackPlugin(),
      new ScriptExtHtmlWebpackPlugin({
        defaultAttribute: 'async'
      })
    ]  
    

    source

  5. run npm run build since ng build no longer works on ejected apps. After running above command, you should get all scripts set to async within dist directory.

like image 50
Andriy Avatar answered Sep 18 '22 17:09

Andriy