@qse/edu-scripts 1.12.3 → 1.12.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # 更新日志
2
2
 
3
+ ## 1.12.5 (2022-11-03)
4
+
5
+ - feat: 优化 cdn external 规则
6
+
7
+ ## 1.12.4 (2022-11-03)
8
+
9
+ - feat: 优化 cdn external 规则
10
+
3
11
  ## 1.12.3 (2022-11-01)
4
12
 
5
13
  - fix: 修复 commit-dist 错误
package/docs/override.md CHANGED
@@ -59,8 +59,8 @@ const path = require('path')
59
59
 
60
60
  module.exports = defineConfig({
61
61
  alias: {
62
- config: path.resolve(__dirname,'src/config')
63
- }
62
+ config: path.resolve(__dirname, 'src/config'),
63
+ },
64
64
  })
65
65
  ```
66
66
 
@@ -70,7 +70,7 @@ module.exports = defineConfig({
70
70
  const { defineConfig } = require('@qse/edu-scripts')
71
71
 
72
72
  module.exports = defineConfig({
73
- pure_funcs: []
73
+ pure_funcs: [],
74
74
  })
75
75
  ```
76
76
 
@@ -98,7 +98,7 @@ module.exports = defineConfig({
98
98
 
99
99
  适用范围:antd-mobile@2, antd-mobile@5
100
100
 
101
- 安装公司内专用的 pxtorem 插件,比原版增加了 include 与 CSS变量 编译。并且修改默认值 `1rem === 10px`
101
+ 安装公司内专用的 pxtorem 插件,比原版增加了 include 与 CSS 变量 编译。并且修改默认值 `1rem === 10px`
102
102
 
103
103
  ```bash
104
104
  npm i @qse/postcss-pxtorem
@@ -106,14 +106,10 @@ npm i @qse/postcss-pxtorem
106
106
 
107
107
  ```js
108
108
  const { defineConfig } = require('@qse/edu-scripts')
109
- const pxtorem = require('@qse/postcss-pxtorem')
109
+ const pxtorem = require('@qse/postcss-pxtorem')
110
110
 
111
111
  module.exports = defineConfig({
112
- extraPostCSSPlugins: [
113
- pxtorem({
114
- include: ['antd-mobile']
115
- })
116
- ]
112
+ extraPostCSSPlugins: [pxtorem({ include: ['antd-mobile'] })],
117
113
  })
118
114
  ```
119
115
 
@@ -137,8 +133,7 @@ module.exports = defineConfig({
137
133
  var maxFontSize = max / scale
138
134
  }
139
135
 
140
- docEl.style.fontSize =
141
- Math.min((docEl.clientWidth / designWidth) * base, maxFontSize) + 'px'
136
+ docEl.style.fontSize = Math.min((docEl.clientWidth / designWidth) * base, maxFontSize) + 'px'
142
137
  }
143
138
  resize()
144
139
  window.addEventListener('resize', resize)
@@ -154,12 +149,32 @@ module.exports = defineConfig({
154
149
  const { defineConfig } = require('@qse/edu-scripts')
155
150
 
156
151
  module.exports = defineConfig({
157
- babel(config){
158
- config.plugins.push([
159
- 'import',
160
- { libraryName: 'antd-mobile', libraryDirectory: 'es', style: true },
161
- 'antd-mobile',
162
- ])
163
- }
152
+ babel(config) {
153
+ config.plugins.push(['import', { libraryName: 'antd-mobile', style: true }, 'antd-mobile'])
154
+ },
155
+ })
156
+ ```
157
+
158
+ ### 兼容 antd-mobile@1
159
+
160
+ 安装 `svg-sprite-loader` 模块,复制下面的代码
161
+
162
+ ```shell
163
+ npm i svg-sprite-loader
164
+ ```
165
+
166
+ ```js
167
+ const { defineConfig } = require('@qse/edu-scripts')
168
+ module.exports = defineConfig({
169
+ webpack(config) {
170
+ config.module.rules[0].oneOf.unshift({
171
+ test: /\.svg$/,
172
+ loader: 'svg-sprite-loader',
173
+ options: {
174
+ esModule: false,
175
+ runtimeCompat: true,
176
+ },
177
+ })
178
+ },
164
179
  })
165
180
  ```
package/docs/refactor.md CHANGED
@@ -24,10 +24,19 @@
24
24
  <script src="//www.zhidianbao.cn:8088/qsxxwapdev/edu-scripts/react-dev-preset.js"></script>
25
25
  <script src="//www.zhidianbao.cn:8088/qsxxwapdev/edu-scripts/moment2.29.1.js"></script>
26
26
  <script src="//www.zhidianbao.cn:8088/qsxxwapdev/edu-scripts/antd3.26.20.js"></script>
27
+
28
+ <!-- 如果用到 @qse/antd -->
29
+ <script src="//www.zhidianbao.cn:8088/qsxxwapdev/edu-scripts/qsb-antd.min.js"></script>
30
+ <!-- 如果用到 @qse/scheme-render -->
31
+ <script src="//www.zhidianbao.cn:8088/qsxxwapdev/edu-scripts/qsb-scheme-render.min.js"></script>
27
32
  <% } else { %>
28
33
  <script src="//static.qsepay.net/lib/react16.14_fastclick1.0.6_natty-storage2.0.2-fetch2.4.2_axios0.21.1_common31.js"></script>
29
34
  <script src="//static.qsepay.net/lib/moment2.29.1.js"></script>
30
35
  <script src="//static.qsepay.net/lib/antd3.26.20.js"></script>
36
+
37
+ <!-- 如果你是主工程,需要下面这两个文件 -->
38
+ <script src="static/lib/qsb-antd.min.js"></script>
39
+ <script src="static/lib/qsb-scheme-render.min.js"></script>
31
40
  <% } %>
32
41
  ```
33
42
 
@@ -34,23 +34,21 @@ const lessRegex = /\.less$/;
34
34
  const lessModuleRegex = /\.module\.less$/;
35
35
  const imageInlineSizeLimit = 10 * 1024;
36
36
 
37
- const qsbCDN = (() => {
37
+ const qseCDN = (() => {
38
38
  const contents = paths.indexHTML.map(url => fs.readFileSync(url, 'utf-8'));
39
- const isUseCommon = contents.some(content => /react16.14.*_common31?.js/.test(content));
40
- const isUseAxios = contents.some(content => /react16.14.*_axios0.21.1/.test(content));
41
- const isUseMoment = contents.some(content => content.includes('moment2.29.1.js'));
42
- const isUseAntd = contents.some(content => content.includes('antd3.26.20.js'));
43
- const isUseQsbAntd = contents.some(content => content.includes('qsb-antd.min.js'));
44
- const isUseQsbSchemeRender = contents.some(content => content.includes('qsb-scheme-render.min.js'));
45
- const isUse = isUseAntd || isUseCommon || isUseMoment || isUseAxios || isUseQsbAntd || isUseQsbSchemeRender;
39
+
40
+ function include(pattern) {
41
+ const regexp = new RegExp(pattern);
42
+ return contents.some(content => regexp.test(content));
43
+ }
44
+
46
45
  return {
47
- isUse,
48
- isUseAntd,
49
- isUseCommon,
50
- isUseMoment,
51
- isUseAxios,
52
- isUseQsbAntd,
53
- isUseQsbSchemeRender
46
+ isUseCommon: include(/react16.14.*_common31?.js|react-dev-preset.js/),
47
+ isUseAxios: include(/react16.14.*_axios0.21.1|react-dev-preset.js/),
48
+ isUseMoment: include('moment2.29.1.js'),
49
+ isUseAntd: include('antd3.26.20.js'),
50
+ isUseQsbAntd: include('qsb-antd.min.js'),
51
+ isUseQsbSchemeRender: include('qsb-scheme-render.min.js')
54
52
  };
55
53
  })();
56
54
  /**
@@ -131,25 +129,41 @@ module.exports = function getWebpackConfig(args, override) {
131
129
  uniqueName: appPkg.name,
132
130
  publicPath: ''
133
131
  },
134
- externals: Object.assign({}, qsbCDN.isUseCommon && {
132
+ externals: Object.assign({}, qseCDN.isUseCommon && {
135
133
  react: 'React',
136
134
  'react-dom': 'ReactDOM',
137
135
  'natty-fetch': 'nattyFetch',
138
136
  'natty-storage': 'nattyStorage',
139
- 'common-utils': 'CommonUtils'
140
- }, qsbCDN.isUseAxios && {
137
+ 'common-utils': 'CommonUtils',
138
+ '@qse/common-utils': 'CommonUtils'
139
+ }, qseCDN.isUseAxios && {
141
140
  axios: 'axios'
142
- }, qsbCDN.isUseMoment && {
141
+ }, qseCDN.isUseMoment && {
143
142
  moment: 'moment'
144
- }, qsbCDN.isUseAntd && Object.assign({
143
+ }, qseCDN.isUseAntd && Object.assign({
145
144
  react: 'React',
146
145
  'react-dom': 'ReactDOM',
147
146
  moment: 'moment',
148
147
  antd: 'antd'
149
- }, qsbCDN.isUseQsbAntd && {
148
+ }, qseCDN.isUseQsbAntd && {
150
149
  '@qse/antd': 'qsbAntd',
151
150
  '@qsb/antd': 'qsbAntd'
152
- }, qsbCDN.isUseQsbSchemeRender && {
151
+ }, qseCDN.isUseQsbSchemeRender && {
152
+ '@qse/scheme-render': 'qsbSchemeRender',
153
+ '@qsb/scheme-render': 'qsbSchemeRender'
154
+ }), // 教育工程这些一定都需要 external
155
+ !appConfig.single && Object.assign({
156
+ react: 'React',
157
+ 'react-dom': 'ReactDOM',
158
+ 'natty-fetch': 'nattyFetch',
159
+ 'natty-storage': 'nattyStorage',
160
+ 'common-utils': 'CommonUtils',
161
+ '@qse/common-utils': 'CommonUtils',
162
+ moment: 'moment',
163
+ antd: 'antd'
164
+ }, isProd && {
165
+ '@qse/antd': 'qsbAntd',
166
+ '@qsb/antd': 'qsbAntd',
153
167
  '@qse/scheme-render': 'qsbSchemeRender',
154
168
  '@qsb/scheme-render': 'qsbSchemeRender'
155
169
  }), override.externals),
@@ -291,7 +305,7 @@ module.exports = function getWebpackConfig(args, override) {
291
305
  }].filter(Boolean)
292
306
  }]
293
307
  },
294
- plugins: [qsbCDN.isUseCommon && new webpack.DllReferencePlugin({
308
+ plugins: [qseCDN.isUseCommon && new webpack.DllReferencePlugin({
295
309
  manifest: require('../asset/dll/libcommon3-manifest.json')
296
310
  }), new webpack.IgnorePlugin({
297
311
  resourceRegExp: /^\.\/locale$/,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@qse/edu-scripts",
3
- "version": "1.12.3",
3
+ "version": "1.12.5",
4
4
  "author": "Kinoko",
5
5
  "license": "MIT",
6
6
  "description": "教育工程化基础框架",
@@ -24,27 +24,21 @@ const lessModuleRegex = /\.module\.less$/
24
24
 
25
25
  const imageInlineSizeLimit = 10 * 1024
26
26
 
27
- const qsbCDN = (() => {
27
+ const qseCDN = (() => {
28
28
  const contents = paths.indexHTML.map((url) => fs.readFileSync(url, 'utf-8'))
29
- const isUseCommon = contents.some((content) => /react16.14.*_common31?.js/.test(content))
30
- const isUseAxios = contents.some((content) => /react16.14.*_axios0.21.1/.test(content))
31
- const isUseMoment = contents.some((content) => content.includes('moment2.29.1.js'))
32
- const isUseAntd = contents.some((content) => content.includes('antd3.26.20.js'))
33
- const isUseQsbAntd = contents.some((content) => content.includes('qsb-antd.min.js'))
34
- const isUseQsbSchemeRender = contents.some((content) =>
35
- content.includes('qsb-scheme-render.min.js')
36
- )
37
29
 
38
- const isUse =
39
- isUseAntd || isUseCommon || isUseMoment || isUseAxios || isUseQsbAntd || isUseQsbSchemeRender
30
+ function include(pattern) {
31
+ const regexp = new RegExp(pattern)
32
+ return contents.some((content) => regexp.test(content))
33
+ }
34
+
40
35
  return {
41
- isUse,
42
- isUseAntd,
43
- isUseCommon,
44
- isUseMoment,
45
- isUseAxios,
46
- isUseQsbAntd,
47
- isUseQsbSchemeRender,
36
+ isUseCommon: include(/react16.14.*_common31?.js|react-dev-preset.js/),
37
+ isUseAxios: include(/react16.14.*_axios0.21.1|react-dev-preset.js/),
38
+ isUseMoment: include('moment2.29.1.js'),
39
+ isUseAntd: include('antd3.26.20.js'),
40
+ isUseQsbAntd: include('qsb-antd.min.js'),
41
+ isUseQsbSchemeRender: include('qsb-scheme-render.min.js'),
48
42
  }
49
43
  })()
50
44
 
@@ -133,16 +127,17 @@ module.exports = function getWebpackConfig(args, override) {
133
127
  },
134
128
  externals: Object.assign(
135
129
  {},
136
- qsbCDN.isUseCommon && {
130
+ qseCDN.isUseCommon && {
137
131
  react: 'React',
138
132
  'react-dom': 'ReactDOM',
139
133
  'natty-fetch': 'nattyFetch',
140
134
  'natty-storage': 'nattyStorage',
141
135
  'common-utils': 'CommonUtils',
136
+ '@qse/common-utils': 'CommonUtils',
142
137
  },
143
- qsbCDN.isUseAxios && { axios: 'axios' },
144
- qsbCDN.isUseMoment && { moment: 'moment' },
145
- qsbCDN.isUseAntd &&
138
+ qseCDN.isUseAxios && { axios: 'axios' },
139
+ qseCDN.isUseMoment && { moment: 'moment' },
140
+ qseCDN.isUseAntd &&
146
141
  Object.assign(
147
142
  {
148
143
  react: 'React',
@@ -150,11 +145,32 @@ module.exports = function getWebpackConfig(args, override) {
150
145
  moment: 'moment',
151
146
  antd: 'antd',
152
147
  },
153
- qsbCDN.isUseQsbAntd && {
148
+ qseCDN.isUseQsbAntd && {
154
149
  '@qse/antd': 'qsbAntd',
155
150
  '@qsb/antd': 'qsbAntd',
156
151
  },
157
- qsbCDN.isUseQsbSchemeRender && {
152
+ qseCDN.isUseQsbSchemeRender && {
153
+ '@qse/scheme-render': 'qsbSchemeRender',
154
+ '@qsb/scheme-render': 'qsbSchemeRender',
155
+ }
156
+ ),
157
+
158
+ // 教育工程这些一定都需要 external
159
+ !appConfig.single &&
160
+ Object.assign(
161
+ {
162
+ react: 'React',
163
+ 'react-dom': 'ReactDOM',
164
+ 'natty-fetch': 'nattyFetch',
165
+ 'natty-storage': 'nattyStorage',
166
+ 'common-utils': 'CommonUtils',
167
+ '@qse/common-utils': 'CommonUtils',
168
+ moment: 'moment',
169
+ antd: 'antd',
170
+ },
171
+ isProd && {
172
+ '@qse/antd': 'qsbAntd',
173
+ '@qsb/antd': 'qsbAntd',
158
174
  '@qse/scheme-render': 'qsbSchemeRender',
159
175
  '@qsb/scheme-render': 'qsbSchemeRender',
160
176
  }
@@ -311,7 +327,7 @@ module.exports = function getWebpackConfig(args, override) {
311
327
  ],
312
328
  },
313
329
  plugins: [
314
- qsbCDN.isUseCommon &&
330
+ qseCDN.isUseCommon &&
315
331
  new webpack.DllReferencePlugin({
316
332
  manifest: require('../asset/dll/libcommon3-manifest.json'),
317
333
  }),