@ecoding/base.build 0.2.1 → 0.2.3
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/README.md +15 -0
- package/libs/module/css-loader/index.js +16 -2
- package/libs/module/css-loader/ssr.js +16 -2
- package/libs/module/index.js +10 -17
- package/libs/module/ssr.js +4 -10
- package/libs/module/ts-loader/index.js +14 -17
- package/libs/module/ts-loader/ssr.js +13 -10
- package/libs/optimization/spa.js +1 -1
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -38,6 +38,20 @@
|
|
|
38
38
|
}
|
|
39
39
|
```
|
|
40
40
|
|
|
41
|
+
## 注意:
|
|
42
|
+
|
|
43
|
+
内部已经支持了 sass 和 less 配置,默认 less,如果想要使用 sass,还需额外安装:
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
# "node-sass": "^7.0.3",
|
|
47
|
+
# "sass-loader": "^13.1.0",
|
|
48
|
+
|
|
49
|
+
npm i sass-loader node-sass -D --registry http://r.cnpmjs.org
|
|
50
|
+
# 或
|
|
51
|
+
npm i sass-loader node-sass -D --registry https://registry.npm.taobao.org
|
|
52
|
+
|
|
53
|
+
```
|
|
54
|
+
|
|
41
55
|
## 复杂自定义打包配置
|
|
42
56
|
|
|
43
57
|
在工程下新建 build.js,return webpack 的配置即可,注意完全按照 webpack 配置规则,框架无做任何干涉
|
|
@@ -90,6 +104,7 @@ module.exports = {
|
|
|
90
104
|
"less-loader": "11.0.0",
|
|
91
105
|
"mini-css-extract-plugin": "2.6.1", // css压缩
|
|
92
106
|
"postcss-loader": "7.0.0", // css向下兼容
|
|
107
|
+
"rimraf": "^3.0.2",
|
|
93
108
|
"style-loader": "3.3.1", // 编译 style 内联css
|
|
94
109
|
"terser-webpack-plugin": "5.3.3", // js压缩
|
|
95
110
|
"typescript": "4.8.3",
|
|
@@ -7,10 +7,11 @@ const loaders = [
|
|
|
7
7
|
{
|
|
8
8
|
loader: "css-loader",
|
|
9
9
|
options: {
|
|
10
|
-
modules: {
|
|
10
|
+
modules: {
|
|
11
|
+
// enable CSS modules for all files matching /\.module\.\w+$/i.test(filename) and /\.icss\.\w+$/i.test(filename) regexp.
|
|
11
12
|
auto: true,
|
|
12
13
|
mode: "local",
|
|
13
|
-
localIdentName:
|
|
14
|
+
localIdentName: "[name]-[local]--[hash:base64:5]"
|
|
14
15
|
}
|
|
15
16
|
}
|
|
16
17
|
},
|
|
@@ -46,6 +47,18 @@ const getLessRule = () => {
|
|
|
46
47
|
};
|
|
47
48
|
};
|
|
48
49
|
|
|
50
|
+
const getSassRule = () => {
|
|
51
|
+
return {
|
|
52
|
+
test: /\.scss$/,
|
|
53
|
+
use: [
|
|
54
|
+
...loaders,
|
|
55
|
+
{
|
|
56
|
+
loader: "sass-loader"
|
|
57
|
+
}
|
|
58
|
+
]
|
|
59
|
+
};
|
|
60
|
+
};
|
|
61
|
+
|
|
49
62
|
const getCssRule = () => {
|
|
50
63
|
return {
|
|
51
64
|
test: /\.css$/,
|
|
@@ -55,5 +68,6 @@ const getCssRule = () => {
|
|
|
55
68
|
|
|
56
69
|
module.exports = {
|
|
57
70
|
getCssRule,
|
|
71
|
+
getSassRule,
|
|
58
72
|
getLessRule
|
|
59
73
|
};
|
|
@@ -2,10 +2,11 @@ const loaders = [
|
|
|
2
2
|
{
|
|
3
3
|
loader: "css-loader",
|
|
4
4
|
options: {
|
|
5
|
-
modules: {
|
|
5
|
+
modules: {
|
|
6
|
+
// enable CSS modules for all files matching /\.module\.\w+$/i.test(filename) and /\.icss\.\w+$/i.test(filename) regexp.
|
|
6
7
|
auto: true,
|
|
7
8
|
mode: "local",
|
|
8
|
-
localIdentName:
|
|
9
|
+
localIdentName: "[name]-[local]--[hash:base64:5]",
|
|
9
10
|
exportOnlyLocals: true
|
|
10
11
|
}
|
|
11
12
|
}
|
|
@@ -41,6 +42,18 @@ const getLessRule = () => {
|
|
|
41
42
|
};
|
|
42
43
|
};
|
|
43
44
|
|
|
45
|
+
const getSassRule = () => {
|
|
46
|
+
return {
|
|
47
|
+
test: /\.scss$/,
|
|
48
|
+
use: [
|
|
49
|
+
...loaders,
|
|
50
|
+
{
|
|
51
|
+
loader: "sass-loader"
|
|
52
|
+
}
|
|
53
|
+
]
|
|
54
|
+
};
|
|
55
|
+
};
|
|
56
|
+
|
|
44
57
|
const getCssRule = () => {
|
|
45
58
|
return {
|
|
46
59
|
test: /\.css$/,
|
|
@@ -50,5 +63,6 @@ const getCssRule = () => {
|
|
|
50
63
|
|
|
51
64
|
module.exports = {
|
|
52
65
|
getCssRule,
|
|
66
|
+
getSassRule,
|
|
53
67
|
getLessRule
|
|
54
68
|
};
|
package/libs/module/index.js
CHANGED
|
@@ -1,29 +1,22 @@
|
|
|
1
|
-
const getTsRule = require(
|
|
2
|
-
const { getCssRule, getLessRule } = require(
|
|
3
|
-
const getImgRule = require(
|
|
4
|
-
const getSvgRule = require(
|
|
5
|
-
const getFontRule = require(
|
|
1
|
+
const getTsRule = require("./ts-loader");
|
|
2
|
+
const { getCssRule, getLessRule, getSassRule } = require("./css-loader");
|
|
3
|
+
const getImgRule = require("./img-loader");
|
|
4
|
+
const getSvgRule = require("./svg-loader");
|
|
5
|
+
const getFontRule = require("./font-loader");
|
|
6
6
|
|
|
7
7
|
const getModule = () => {
|
|
8
8
|
const tsRule = getTsRule();
|
|
9
9
|
const lessRule = getLessRule();
|
|
10
10
|
const cssRule = getCssRule();
|
|
11
|
+
const sassRule = getSassRule();
|
|
11
12
|
const imgRule = getImgRule();
|
|
12
13
|
const svgRule = getSvgRule();
|
|
13
14
|
const fontRule = getFontRule();
|
|
14
15
|
|
|
15
16
|
return {
|
|
16
17
|
// noParse:/test.js$/, 不编译正则匹配上的文件
|
|
17
|
-
rules: [
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
cssRule,
|
|
21
|
-
imgRule,
|
|
22
|
-
svgRule,
|
|
23
|
-
fontRule
|
|
24
|
-
]
|
|
25
|
-
}
|
|
26
|
-
}
|
|
18
|
+
rules: [tsRule, lessRule, sassRule, cssRule, imgRule, svgRule, fontRule]
|
|
19
|
+
};
|
|
20
|
+
};
|
|
27
21
|
|
|
28
|
-
|
|
29
|
-
module.exports = getModule;
|
|
22
|
+
module.exports = getModule;
|
package/libs/module/ssr.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
const getImgRule = require("./img-loader");
|
|
2
|
-
const getTsRule = require(
|
|
2
|
+
const getTsRule = require("./ts-loader/ssr");
|
|
3
3
|
const getSvgRule = require("./svg-loader");
|
|
4
4
|
const getFontRule = require("./font-loader");
|
|
5
|
-
const { getLessRule, getCssRule } = require("./css-loader/ssr");
|
|
5
|
+
const { getLessRule, getCssRule, getSassRule } = require("./css-loader/ssr");
|
|
6
6
|
|
|
7
7
|
const getModule = () => {
|
|
8
8
|
const tsRule = getTsRule();
|
|
@@ -11,17 +11,11 @@ const getModule = () => {
|
|
|
11
11
|
const fontRule = getFontRule();
|
|
12
12
|
const cssRule = getCssRule();
|
|
13
13
|
const lessRule = getLessRule();
|
|
14
|
+
const sassRule = getSassRule();
|
|
14
15
|
|
|
15
16
|
return {
|
|
16
17
|
// noParse:/test.js$/, 不编译正则匹配上的文件
|
|
17
|
-
rules: [
|
|
18
|
-
tsRule,
|
|
19
|
-
lessRule,
|
|
20
|
-
cssRule,
|
|
21
|
-
imgRule,
|
|
22
|
-
svgRule,
|
|
23
|
-
fontRule
|
|
24
|
-
]
|
|
18
|
+
rules: [tsRule, lessRule, sassRule, cssRule, imgRule, svgRule, fontRule]
|
|
25
19
|
};
|
|
26
20
|
};
|
|
27
21
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
const { rootPath } = require("../../z-helpers/paths");
|
|
2
|
-
|
|
2
|
+
const { customConfig } = require("../../z-helpers/config");
|
|
3
3
|
const presets = [
|
|
4
4
|
[
|
|
5
5
|
"@babel/preset-env",
|
|
@@ -32,29 +32,26 @@ const presets = [
|
|
|
32
32
|
*/
|
|
33
33
|
useBuiltIns: "usage",
|
|
34
34
|
targets: {
|
|
35
|
-
browsers: [
|
|
36
|
-
"last 1 version",
|
|
37
|
-
"> 1%",
|
|
38
|
-
"IE 10",
|
|
39
|
-
"iOS >=6",
|
|
40
|
-
"Android >=4"
|
|
41
|
-
]
|
|
35
|
+
browsers: ["last 1 version", "> 1%", "IE 10", "iOS >=6", "Android >=4"]
|
|
42
36
|
},
|
|
43
37
|
// 如果设为true,则会编译 es6Module 语法,则会失去tree-shaking
|
|
44
38
|
modules: false,
|
|
45
|
-
corejs: 3,
|
|
39
|
+
corejs: customConfig.corejs || 3,
|
|
46
40
|
// 需要忽略的预编译包
|
|
47
41
|
exclude: [
|
|
48
42
|
// 没使用Symbol,不需要_typeof方法兼容Symbol
|
|
49
|
-
|
|
43
|
+
"transform-typeof-symbol"
|
|
50
44
|
]
|
|
51
45
|
}
|
|
52
46
|
],
|
|
53
|
-
[
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
47
|
+
[
|
|
48
|
+
"@babel/preset-react",
|
|
49
|
+
{
|
|
50
|
+
// automatic 自动模式 不需要引入 import React form 'react';
|
|
51
|
+
// classic 经典模式 需要引入 import React form 'react';
|
|
52
|
+
runtime: "classic"
|
|
53
|
+
}
|
|
54
|
+
],
|
|
58
55
|
["@babel/preset-typescript"]
|
|
59
56
|
].filter(Boolean);
|
|
60
57
|
|
|
@@ -67,13 +64,13 @@ const plugins = [
|
|
|
67
64
|
].filter(Boolean);
|
|
68
65
|
|
|
69
66
|
const babelLoader = {
|
|
70
|
-
loader:
|
|
67
|
+
loader: "babel-loader",
|
|
71
68
|
options: {
|
|
72
69
|
presets,
|
|
73
70
|
plugins,
|
|
74
71
|
cacheDirectory: true
|
|
75
72
|
}
|
|
76
|
-
}
|
|
73
|
+
};
|
|
77
74
|
|
|
78
75
|
const getTsRule = () => {
|
|
79
76
|
return {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
const { rootPath } = require("../../z-helpers/paths");
|
|
2
|
-
|
|
2
|
+
const { customConfig } = require("../../z-helpers/config");
|
|
3
3
|
const presets = [
|
|
4
4
|
[
|
|
5
5
|
"@babel/preset-env",
|
|
@@ -34,19 +34,22 @@ const presets = [
|
|
|
34
34
|
targets: "node 14.0",
|
|
35
35
|
// 如果设为true,则会编译 es6Module 语法,则会失去tree-shaking
|
|
36
36
|
modules: false,
|
|
37
|
-
corejs: 3,
|
|
37
|
+
corejs: customConfig.corejs || 3,
|
|
38
38
|
// 需要忽略的预编译包
|
|
39
39
|
exclude: [
|
|
40
40
|
// 没使用Symbol,不需要_typeof方法兼容Symbol
|
|
41
|
-
|
|
41
|
+
"transform-typeof-symbol"
|
|
42
42
|
]
|
|
43
43
|
}
|
|
44
44
|
],
|
|
45
|
-
[
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
45
|
+
[
|
|
46
|
+
"@babel/preset-react",
|
|
47
|
+
{
|
|
48
|
+
// automatic 自动模式 不需要引入 import React form 'react'; 对应tsconfig.json jsx: react-jsx
|
|
49
|
+
// classic 经典模式 需要引入 import React form 'react'; 对应tsconfig.json jsx: react
|
|
50
|
+
runtime: "classic"
|
|
51
|
+
}
|
|
52
|
+
],
|
|
50
53
|
["@babel/preset-typescript"]
|
|
51
54
|
].filter(Boolean);
|
|
52
55
|
|
|
@@ -59,13 +62,13 @@ const presets = [
|
|
|
59
62
|
// ].filter(Boolean);
|
|
60
63
|
|
|
61
64
|
const babelLoader = {
|
|
62
|
-
loader:
|
|
65
|
+
loader: "babel-loader",
|
|
63
66
|
options: {
|
|
64
67
|
presets,
|
|
65
68
|
// plugins,
|
|
66
69
|
cacheDirectory: true
|
|
67
70
|
}
|
|
68
|
-
}
|
|
71
|
+
};
|
|
69
72
|
|
|
70
73
|
const getTsRule = () => {
|
|
71
74
|
return {
|
package/libs/optimization/spa.js
CHANGED
|
@@ -29,7 +29,7 @@ const getOptimization = () => {
|
|
|
29
29
|
// 这里的体积大小时指压缩前的
|
|
30
30
|
obj.splitChunks = {
|
|
31
31
|
chunks: "all", // initial | all | async all 表明了在异步和同步之间共享
|
|
32
|
-
minSize:
|
|
32
|
+
minSize: 1500000, // 生成 chunk 的最小体积(以 bytes 为单位) 不限制,想要达到dll效果 这里是关键
|
|
33
33
|
maxSize: 2000000, // 封装的模块的最小体积 0 不限制
|
|
34
34
|
minRemainingSize: 10000, // 分割后剩下的模块大小 0 不限制
|
|
35
35
|
minChunks: 1, // 模块的最小被引用次数
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ecoding/base.build",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.3",
|
|
4
4
|
"description": "tpl building",
|
|
5
5
|
"author": "cxc",
|
|
6
6
|
"license": "MIT",
|
|
@@ -29,6 +29,7 @@
|
|
|
29
29
|
"cross-env": "7.0.3",
|
|
30
30
|
"css-loader": "6.7.1",
|
|
31
31
|
"css-minimizer-webpack-plugin": "4.0.0",
|
|
32
|
+
"eslint": "8.18.0",
|
|
32
33
|
"globby": "^11.0.2",
|
|
33
34
|
"html-webpack-plugin": "5.5.0",
|
|
34
35
|
"inline-chunk-html-plugin": "1.1.1",
|
|
@@ -50,5 +51,5 @@
|
|
|
50
51
|
"publishConfig": {
|
|
51
52
|
"access": "public"
|
|
52
53
|
},
|
|
53
|
-
"gitHead": "
|
|
54
|
+
"gitHead": "adaea9603610921a2c9c356c9c0ca765320396eb"
|
|
54
55
|
}
|