@ -382,6 +382,83 @@ Configure<AbpBundlingOptions>(options =>
< script defer src = "/libs/timeago/locales/jquery.timeago.en.js?_v=637674729040000000" > < / script >
````
### CDN Support
You can configure `AbpBundlingOptions` or use `is-cdn` on `script/style` taghelper to load all or a single js/css file from CDN.
#### Add CDN files in `AbpBundlingOptions`
````csharp
Configure< AbpBundlingOptions > (options =>
{
options.StyleBundles
.Add("MyStyleBundle", configuration =>
{
configuration
.AddFiles("/styles/my-style1.css")
.AddFiles("/styles/my-style2.css")
.AddCdnFiles("https://cdn.abp.io/bootstrap.css")
.AddFiles("/styles/my-style3.css")
.AddFiles("/styles/my-style4.css");
});
options.ScriptBundles
.Add("MyScriptBundle", configuration =>
{
configuration
.AddFiles("/scripts/my-script1.js")
.AddFiles("/scripts/my-script2.js")
.AddCdnFiles("https://cdn.abp.io/bootstrap.js")
.AddFiles("/scripts/my-script3.js")
.AddFiles("/scripts/my-script4.js");
});
});
````
**Output HTML:**
````html
< link rel = "stylesheet" href = "/__bundles/MyStyleBundle.EA8C28419DCA43363E9670973D4C0D15.css?_v=638331889644609730" / >
< link rel = "stylesheet" href = "https://cdn.abp.io/bootstrap.css" / >
< link rel = "stylesheet" href = "/__bundles/MyStyleBundle.AC2E0AA6C461A0949A1295E9BDAC049C.css?_v=638331889644623860" / >
< script src = "/__bundles/MyScriptBundle.C993366DF8840E08228F3EE685CB08E8.js?_v=638331889644937120" > < / script >
< script src = "https://cdn.abp.io/bootstrap.js" > < / script >
< script src = "/__bundles/MyScriptBundle.2E8D0FDC6334D2A6B847393A801525B7.js?_v=638331889644943970" > < / script >
````
#### Add CDN files in Tag Helpers.
````html
< abp-style-bundle name = "MyStyleBundle" >
< abp-style src = "/styles/my-style1.css" / >
< abp-style src = "/styles/my-style2.css" / >
< abp-style src = "https://cdn.abp.io/bootstrap.css" is-cdn = "true" / >
< abp-style src = "/styles/my-style3.css" / >
< abp-style src = "/styles/my-style4.css" / >
< / abp-style-bundle >
< abp-script-bundle name = "MyScriptBundle" >
< abp-script src = "/scripts/my-script1.js" / >
< abp-script src = "/scripts/my-script2.js" / >
< abp-script src = "https://cdn.abp.io/bootstrap.js" is-cdn = "true" / >
< abp-script src = "/scripts/my-script3.js" / >
< abp-script src = "/scripts/my-script4.js" / >
< / abp-script-bundle >
````
**Output HTML:**
````html
< link rel = "stylesheet" href = "/__bundles/MyStyleBundle.C60C7B9C1F539659623BB6E7227A7C45.css?_v=638331889645002500" / >
< link rel = "stylesheet" href = "https://cdn.abp.io/bootstrap.css" / >
< link rel = "stylesheet" href = "/__bundles/MyStyleBundle.464328A06039091534650B0E049904C6.css?_v=638331889645012300" / >
< script src = "/__bundles/MyScriptBundle.55FDCBF2DCB9E0767AE6FA7487594106.js?_v=638331889645050410" > < / script >
< script src = "https://cdn.abp.io/bootstrap.js" > < / script >
< script src = "/__bundles/MyScriptBundle.191CB68AB4F41C8BF3A7AE422F19A3D2.js?_v=638331889645055490" > < / script >
````
## Themes
Themes uses the standard package contributors to add library resources to page layouts. Themes may also define some standard/global bundles, so any module can contribute to these standard/global bundles. See the [theming documentation ](Theming.md ) for more.