remove usage of jsDelivr

fix #369
fix #372
fix #375
This commit is contained in:
Pig Fang 2022-02-16 17:57:01 +08:00
parent 424ab20db1
commit 5fc5c2c8c2
No known key found for this signature in database
GPG Key ID: A8198F548DADA9E2
8 changed files with 1225 additions and 64 deletions

View File

@ -25,12 +25,15 @@
"@emotion/styled": "^11.0.0", "@emotion/styled": "^11.0.0",
"@hot-loader/react-dom": "^17.0.0", "@hot-loader/react-dom": "^17.0.0",
"@tweenjs/tween.js": "^18.5.0", "@tweenjs/tween.js": "^18.5.0",
"admin-lte": "^3.2.0",
"blessing-skin-shell": "^0.3.4", "blessing-skin-shell": "^0.3.4",
"bootstrap": "^4.6.1",
"cac": "^6.6.1", "cac": "^6.6.1",
"cli-spinners": "^2.5.0", "cli-spinners": "^2.5.0",
"echarts": "^5.1.2", "echarts": "^5.1.2",
"events": "^3.2.0", "events": "^3.2.0",
"immer": "^7.0.4", "immer": "^7.0.4",
"jquery": "^3.6.0",
"lodash.debounce": "^4.0.8", "lodash.debounce": "^4.0.8",
"nanoid": "^3.1.9", "nanoid": "^3.1.9",
"prompts": "^2.4.0", "prompts": "^2.4.0",
@ -59,7 +62,7 @@
"@types/bootstrap": "^4.3.3", "@types/bootstrap": "^4.3.3",
"@types/css-minimizer-webpack-plugin": "^1.1.0", "@types/css-minimizer-webpack-plugin": "^1.1.0",
"@types/jest": "^26.0.23", "@types/jest": "^26.0.23",
"@types/jquery": "^3.3.38", "@types/jquery": "^3.5.13",
"@types/js-yaml": "^3.12.4", "@types/js-yaml": "^3.12.4",
"@types/lodash.debounce": "^4.0.6", "@types/lodash.debounce": "^4.0.6",
"@types/mini-css-extract-plugin": "^1.2.1", "@types/mini-css-extract-plugin": "^1.2.1",
@ -72,7 +75,6 @@
"@typescript-eslint/eslint-plugin": "^3.6.0", "@typescript-eslint/eslint-plugin": "^3.6.0",
"@typescript-eslint/parser": "^3.6.0", "@typescript-eslint/parser": "^3.6.0",
"autoprefixer": "^10.2.6", "autoprefixer": "^10.2.6",
"bootstrap": "^4.5.0",
"css-loader": "^5.2.6", "css-loader": "^5.2.6",
"css-minimizer-webpack-plugin": "^3.0.1", "css-minimizer-webpack-plugin": "^3.0.1",
"eslint": "^7.4.0", "eslint": "^7.4.0",
@ -82,7 +84,6 @@
"husky": "^7.0.4", "husky": "^7.0.4",
"jest": "^27.0.4", "jest": "^27.0.4",
"jest-extended": "^0.11.5", "jest-extended": "^0.11.5",
"jquery": "^3.5.1",
"js-yaml": "^3.13.1", "js-yaml": "^3.13.1",
"mini-css-extract-plugin": "^1.6.0", "mini-css-extract-plugin": "^1.6.0",
"postcss": "^8.3.0", "postcss": "^8.3.0",

View File

@ -1,4 +1,6 @@
import './init' // Must be first import './init' // must be first
import $ from 'jquery'
import 'admin-lte'
import './extra' import './extra'
import './i18n' import './i18n'
import './net' import './net'

View File

@ -50,22 +50,6 @@ registerRoute(
//#endregion //#endregion
//#region jsDelivr
registerRoute(
/.*cdn\.jsdelivr\.net/,
new CacheFirst({
cacheName: 'jsdelivr-v1',
fetchOptions: {
credentials: 'omit',
mode: 'cors',
},
plugins: [
new ExpirationPlugin({ maxAgeSeconds: oneWeek, purgeOnQuotaError: true }),
],
}),
)
//#endregion
//#region JavaScript files //#region JavaScript files
registerRoute( registerRoute(
/.+\/app\/\w{2,3}\.\w{7}\.js$/, /.+\/app\/\w{2,3}\.\w{7}\.js$/,

View File

@ -14,8 +14,6 @@
} }
</style> </style>
{{ include('assets.home-css', ignore_missing = true) }} {{ include('assets.home-css', ignore_missing = true) }}
<link rel="prefetch" as="script" href="https://cdn.jsdelivr.net/npm/react@17.0.1/umd/react.production.min.js" crossorigin="anonymous">
<link rel="prefetch" as="script" href="https://cdn.jsdelivr.net/npm/react-dom@17.0.1/umd/react-dom.production.min.js" crossorigin="anonymous">
</head> </head>
<body class="hold-transition layout-top-nav"> <body class="hold-transition layout-top-nav">

View File

@ -1,7 +1,3 @@
<script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js" integrity="sha256-/ijcOLwFf26xEYAjW75FizKVo5tnTYiQddPZoLUHHZ8=" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/js/bootstrap.min.js" integrity="sha256-SyTu6CwrfOhaznYZPoolVw2rxoY7lKYKQvqbtqN93HI=" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/admin-lte@3.2.0/dist/js/adminlte.min.js" integrity="sha256-u2yoem2HtOCQCnsp3fO9sj5kUrL+7hOAfm8es18AFjw=" crossorigin="anonymous"></script>
<script src="{{ i18n }}" crossorigin="anonymous"></script> <script src="{{ i18n }}" crossorigin="anonymous"></script>
{{ include('assets.app', ignore_missing = true) }} {{ include('assets.app', ignore_missing = true) }}
{% for script in scripts %} {% for script in scripts %}

View File

@ -6,16 +6,13 @@
<meta name="keywords" content="{{ seo.keywords }}"> <meta name="keywords" content="{{ seo.keywords }}">
<meta name="description" content="{{ seo.description }}"> <meta name="description" content="{{ seo.description }}">
{{ seo.extra|striptags('<meta>')|raw }} {{ seo.extra|striptags('<meta>')|raw }}
<link rel="preconnect" href="https://cdn.jsdelivr.net/" crossorigin> <link rel="preconnect" href="https://unpkg.com/" crossorigin>
{% if custom_cdn_host %} {% if custom_cdn_host %}
<link rel="preconnect" href="{{ custom_cdn_host }}" id="cdn-host" crossorigin> <link rel="preconnect" href="{{ custom_cdn_host }}" id="cdn-host" crossorigin>
{% endif %} {% endif %}
<script id="blessing-globals" type="application/json">{{ blessing|json_encode|raw }}</script> <script id="blessing-globals" type="application/json">{{ blessing|json_encode|raw }}</script>
<script src="{{ url('/meta.js') }}"></script> <script src="{{ url('/meta.js') }}"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/admin-lte@3.2.0/dist/css/adminlte.min.css" integrity="sha256-rhU0oslUDWrWDxTY4JxI2a2OdRtG7YSf3v5zcRbcySE=" crossorigin="anonymous"> <link rel="stylesheet" href="https://unpkg.com/@fortawesome/fontawesome-free@5.15.4/css/all.min.css" crossorigin>
<link rel="preload" as="font" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@5.13.0/webfonts/fa-solid-900.woff2" crossorigin>
<link rel="preload" as="font" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@5.13.0/webfonts/fa-regular-400.woff2" crossorigin>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@5.13.0/css/all.min.css" integrity="sha256-h20CPZ0QyXlBuAw7A+KluUYx/3pK+c7lYEpqLTlxjYQ=" crossorigin>
{{ include('assets.style', ignore_missing = true) }} {{ include('assets.style', ignore_missing = true) }}
{% for link in links %} {% for link in links %}
<link{% for attribute, value in link %} {{ attribute }}="{{ value|raw }}"{% endfor %}> <link{% for attribute, value in link %} {{ attribute }}="{{ value|raw }}"{% endfor %}>

View File

@ -20,7 +20,13 @@ export default function (env?: Env): webpack.Configuration[] {
mode: isDev ? 'development' : 'production', mode: isDev ? 'development' : 'production',
entry: { entry: {
app: ['react-hot-loader/patch', '@/index.tsx'], app: ['react-hot-loader/patch', '@/index.tsx'],
style: ['@/styles/common.css'], style: [
'@/styles/common.css',
'admin-lte/dist/css/alt/adminlte.components.min.css',
'admin-lte/dist/css/alt/adminlte.core.min.css',
'admin-lte/dist/css/alt/adminlte.pages.min.css',
'admin-lte/dist/css/alt/adminlte.light.min.css',
],
home: '@/scripts/homePage.ts', home: '@/scripts/homePage.ts',
'home-css': '@/styles/home.css', 'home-css': '@/styles/home.css',
spectre: [ spectre: [
@ -71,11 +77,6 @@ export default function (env?: Env): webpack.Configuration[] {
chunkFilename: isDev ? '[id].css' : '[id].[contenthash:7].css', chunkFilename: isDev ? '[id].css' : '[id].[contenthash:7].css',
}), }),
new HtmlWebpackPlugin({ new HtmlWebpackPlugin({
templateContent: isDev
? ''
: `
<script src="https://cdn.jsdelivr.net/npm/react@17.0.1/umd/react.production.min.js" integrity="sha256-Ag0WTc8xFszCJo1qbkTKp3wBMdjpjogsZDAhnSge744=" crossorigin></script>
<script src="https://cdn.jsdelivr.net/npm/react-dom@17.0.1/umd/react-dom.production.min.js" integrity="sha256-k8tzaSH8ucPwbsHEO4Wk5szE9zERNVz3XQynfyT66O0=" crossorigin></script>`,
chunks: ['app'], chunks: ['app'],
scriptLoading: 'blocking', scriptLoading: 'blocking',
filename: 'app.twig', filename: 'app.twig',
@ -127,15 +128,6 @@ export default function (env?: Env): webpack.Configuration[] {
assert: false, assert: false,
}, },
}, },
externals: Object.assign(
{ jquery: 'jQuery', bootstrap: 'bootstrap', 'admin-lte': 'adminlte' },
isDev
? {}
: {
react: 'React',
'react-dom': 'ReactDOM',
},
) as Record<string, string>,
optimization: { optimization: {
// @ts-ignore // @ts-ignore
minimizer: [new CssMinimizerPlugin({}), '...'], minimizer: [new CssMinimizerPlugin({}), '...'],

1227
yarn.lock

File diff suppressed because it is too large Load Diff