@moneko/core 3.1.5-beta.1 → 3.1.5-beta.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/lib/common.js +1 -177
- package/lib/html-add-entry-attr.js +6 -7
- package/lib/module.config.js +1 -1
- package/package.json +2 -2
package/lib/common.js
CHANGED
|
@@ -1,177 +1 @@
|
|
|
1
|
-
import e from 'fs
|
|
2
|
-
import t from 'add-asset-html-webpack-plugin';
|
|
3
|
-
import s from 'html-webpack-plugin';
|
|
4
|
-
import o from 'webpack';
|
|
5
|
-
import n from 'webpackbar';
|
|
6
|
-
import './cleanup.js';
|
|
7
|
-
import { CONFIG as l, PUBLICPATH as r } from './config.js';
|
|
8
|
-
import i from './done.js';
|
|
9
|
-
import a from './html-add-entry-attr.js';
|
|
10
|
-
import p from './html-plugin-option.js';
|
|
11
|
-
import { moduleFederation as c } from './module-federation.js';
|
|
12
|
-
import m from './module.config.js';
|
|
13
|
-
import u from './paths.js';
|
|
14
|
-
import {
|
|
15
|
-
CUSTOMCONFIG as f,
|
|
16
|
-
PACKAGENAME as d,
|
|
17
|
-
PACKAGEVERSION as h,
|
|
18
|
-
hasEslintConfig as j,
|
|
19
|
-
hasStylelintConfig as y,
|
|
20
|
-
isDev as g,
|
|
21
|
-
isLibrary as b,
|
|
22
|
-
isMicro as w,
|
|
23
|
-
} from './process-env.js';
|
|
24
|
-
import { seo as x } from './seo.js';
|
|
25
|
-
import { resolveNodeModulesPath as k, resolveProgramPath as v } from './utils.js';
|
|
26
|
-
import C from './virtual-module-plugin.js';
|
|
27
|
-
import $ from './virtual-modules.js';
|
|
28
|
-
let {
|
|
29
|
-
AutomaticPrefetchPlugin: O,
|
|
30
|
-
DefinePlugin: P,
|
|
31
|
-
SourceMapDevToolPlugin: M,
|
|
32
|
-
WatchIgnorePlugin: S,
|
|
33
|
-
} = o,
|
|
34
|
-
B = ['.eslintrc.js', '.eslintrc.json', '.eslintrc.yaml', '.eslintrc.json'],
|
|
35
|
-
D = [
|
|
36
|
-
'.stylelintrc',
|
|
37
|
-
'.stylelintrc.json',
|
|
38
|
-
'.stylelintrc.yaml',
|
|
39
|
-
'.stylelintrc.yml',
|
|
40
|
-
'.stylelintrc.js',
|
|
41
|
-
'stylelint.config.js',
|
|
42
|
-
'stylelint.config.cjs',
|
|
43
|
-
],
|
|
44
|
-
T = e.readdirSync(u.programPath),
|
|
45
|
-
A = !1,
|
|
46
|
-
H = !1;
|
|
47
|
-
for (let e = 0, t = T.length; e < t; e++)
|
|
48
|
-
D.includes(T[e]) && (H = !0), B.includes(T[e]) && (A = !0);
|
|
49
|
-
A || (A = j), H || (H = y);
|
|
50
|
-
let K = H ? (await import('stylelint-webpack-plugin')).default : null,
|
|
51
|
-
L = A ? (await import('eslint-webpack-plugin')).default : null,
|
|
52
|
-
F = l.assetHtml.map((e) => ({ publicPath: '', ...e }));
|
|
53
|
-
export const outputConfig = {
|
|
54
|
-
path: v(b ? 'docs' : 'dist'),
|
|
55
|
-
filename: 'js/[name].bundle.js',
|
|
56
|
-
chunkFilename: `js/[${g ? 'name' : 'chunkhash'}].js`,
|
|
57
|
-
assetModuleFilename: 'assets/[hash][ext][query]',
|
|
58
|
-
library: { name: d, type: 'window' },
|
|
59
|
-
globalObject: 'window',
|
|
60
|
-
chunkLoadingGlobal: `webpackJsonp_${d}`,
|
|
61
|
-
pathinfo: g,
|
|
62
|
-
clean: !0,
|
|
63
|
-
publicPath: r,
|
|
64
|
-
asyncChunks: !0,
|
|
65
|
-
charset: !0,
|
|
66
|
-
};
|
|
67
|
-
let J = { main: k('@app/entry') };
|
|
68
|
-
l.entry &&
|
|
69
|
-
('string' == typeof l.entry ? (J = l.entry) : Object.keys(l.entry) && Object.assign(J, l.entry)),
|
|
70
|
-
l.output &&
|
|
71
|
-
('string' == typeof l.output
|
|
72
|
-
? (outputConfig.path = l.output)
|
|
73
|
-
: Object.keys(l.output) && Object.assign(outputConfig, l.output));
|
|
74
|
-
let R = l.basename.split('/').filter(Boolean).length,
|
|
75
|
-
U = `${Array(R).fill('..').join('/') + (R ? '/' : '')}404.html`,
|
|
76
|
-
{ pathSegmentsToKeep: _ = R, path: q = U } = l.fixBrowserRouter || {},
|
|
77
|
-
z = !1;
|
|
78
|
-
l.cacheDirectory &&
|
|
79
|
-
(z = {
|
|
80
|
-
type: 'filesystem',
|
|
81
|
-
store: 'pack',
|
|
82
|
-
allowCollectingMemory: !0,
|
|
83
|
-
cacheDirectory: l.cacheDirectory,
|
|
84
|
-
memoryCacheUnaffected: !0,
|
|
85
|
-
name: `${f || 'default'}-${g ? 'development' : 'production'}`,
|
|
86
|
-
version: h,
|
|
87
|
-
});
|
|
88
|
-
export const clientConfig = {
|
|
89
|
-
entry: J,
|
|
90
|
-
stats: 'errors-only',
|
|
91
|
-
cache: z,
|
|
92
|
-
infrastructureLogging: { level: 'none' },
|
|
93
|
-
target: 'web',
|
|
94
|
-
externalsPresets: l.externalsPresets,
|
|
95
|
-
plugins: [
|
|
96
|
-
new O(),
|
|
97
|
-
...c,
|
|
98
|
-
L &&
|
|
99
|
-
new L({
|
|
100
|
-
fix: !0,
|
|
101
|
-
threads: !0,
|
|
102
|
-
extensions: [
|
|
103
|
-
'js',
|
|
104
|
-
'md',
|
|
105
|
-
'mdx',
|
|
106
|
-
'cjs',
|
|
107
|
-
'ejs',
|
|
108
|
-
'mjs',
|
|
109
|
-
'jsx',
|
|
110
|
-
'ts',
|
|
111
|
-
'tsx',
|
|
112
|
-
'json',
|
|
113
|
-
'html',
|
|
114
|
-
'coffee',
|
|
115
|
-
'vue',
|
|
116
|
-
],
|
|
117
|
-
}),
|
|
118
|
-
K &&
|
|
119
|
-
new K({
|
|
120
|
-
fix: !0,
|
|
121
|
-
threads: !0,
|
|
122
|
-
extensions: ['css', 'scss', 'sass', 'less', 'ts', 'tsx', 'js', 'jsx'],
|
|
123
|
-
exclude: ['node_modules/', 'es/', 'lib/', 'docs/', 'coverage/', 'dist/'],
|
|
124
|
-
}),
|
|
125
|
-
l.htmlPluginOption && new s(p),
|
|
126
|
-
l.fixBrowserRouter &&
|
|
127
|
-
new s({
|
|
128
|
-
filename: q,
|
|
129
|
-
inject: !1,
|
|
130
|
-
templateContent: () =>
|
|
131
|
-
`<html html><head><title>${p.title}</title><script>var pathSegmentsToKeep = ${
|
|
132
|
-
_ || R
|
|
133
|
-
};var l = window.location;l.replace(l.protocol + '//' + l.hostname + (l.port ? ':' + l.port : '') + l.pathname.split('/').slice(0, 1 + pathSegmentsToKeep).join('/') + '/?/' + l.pathname.slice(1).split('/').slice(pathSegmentsToKeep).join('/').replace(/&/g, '~and~') + (l.search ? '&' + l.search.slice(1).replace(/&/g, '~and~') : '') + l.hash);</script></head><body></body></html>`,
|
|
134
|
-
}),
|
|
135
|
-
new t(F),
|
|
136
|
-
w && new a((e) => !!(e.match(/main\.(.*)\.bundle.js$/) || e.match('main.bundle.js'))),
|
|
137
|
-
new P({ 'process.env': JSON.stringify(l.env) }),
|
|
138
|
-
new S({ paths: [/\.d\.ts$/] }),
|
|
139
|
-
l.sourceMap && new M(l.sourceMap),
|
|
140
|
-
l.bar && new n(l.bar),
|
|
141
|
-
new i({
|
|
142
|
-
done: () => {
|
|
143
|
-
!g && l.seo && x(),
|
|
144
|
-
l.done?.(),
|
|
145
|
-
g ||
|
|
146
|
-
setTimeout(() => {
|
|
147
|
-
process.exit(0);
|
|
148
|
-
}, 2e3);
|
|
149
|
-
},
|
|
150
|
-
}),
|
|
151
|
-
new C($),
|
|
152
|
-
...l.plugins,
|
|
153
|
-
].filter(Boolean),
|
|
154
|
-
experiments: {
|
|
155
|
-
asset: true,
|
|
156
|
-
importAsync: true,
|
|
157
|
-
importAwait: true,
|
|
158
|
-
topLevelAwait: !0,
|
|
159
|
-
asyncWebAssembly: !0,
|
|
160
|
-
cacheUnaffected: !0,
|
|
161
|
-
layers: !0,
|
|
162
|
-
lazyCompilation: g && { imports: !1, entries: !1 },
|
|
163
|
-
buildHttp: l.buildHttp,
|
|
164
|
-
backCompat: !0,
|
|
165
|
-
futureDefaults: !0,
|
|
166
|
-
css: !1,
|
|
167
|
-
outputModule: !1,
|
|
168
|
-
},
|
|
169
|
-
resolve: {
|
|
170
|
-
extensions: ['.tsx', '.ts', '.js', '.jsx', '.wasm'],
|
|
171
|
-
alias: l.alias,
|
|
172
|
-
fallback: { path: !1, fs: !1, crypto: !1, assert: !1 },
|
|
173
|
-
},
|
|
174
|
-
module: m,
|
|
175
|
-
externals: l.externals,
|
|
176
|
-
output: outputConfig,
|
|
177
|
-
};
|
|
1
|
+
import e from"fs";import t from"add-asset-html-webpack-plugin";import s from"html-webpack-plugin";import o from"webpack";import n from"webpackbar";import"./cleanup.js";import{CONFIG as l,PUBLICPATH as r}from"./config.js";import i from"./done.js";import a from"./html-add-entry-attr.js";import p from"./html-plugin-option.js";import{moduleFederation as c}from"./module-federation.js";import m from"./module.config.js";import u from"./paths.js";import{CUSTOMCONFIG as f,PACKAGENAME as d,PACKAGEVERSION as h,hasEslintConfig as j,hasStylelintConfig as y,isDev as g,isLibrary as b,isMicro as w}from"./process-env.js";import{seo as x}from"./seo.js";import{resolveNodeModulesPath as k,resolveProgramPath as v}from"./utils.js";import C from"./virtual-module-plugin.js";import $ from"./virtual-modules.js";let{AutomaticPrefetchPlugin:O,DefinePlugin:P,SourceMapDevToolPlugin:M,WatchIgnorePlugin:S}=o,B=[".eslintrc.js",".eslintrc.json",".eslintrc.yaml",".eslintrc.json"],D=[".stylelintrc",".stylelintrc.json",".stylelintrc.yaml",".stylelintrc.yml",".stylelintrc.js","stylelint.config.js","stylelint.config.cjs"],T=e.readdirSync(u.programPath),A=!1,H=!1;for(let e=0,t=T.length;e<t;e++)D.includes(T[e])&&(H=!0),B.includes(T[e])&&(A=!0);A||(A=j),H||(H=y);let K=H?(await import("stylelint-webpack-plugin")).default:null,L=A?(await import("eslint-webpack-plugin")).default:null,F=l.assetHtml.map(e=>({publicPath:"",...e}));export const outputConfig={path:v(b?"docs":"dist"),filename:"js/[name].bundle.js",chunkFilename:`js/[${g?"name":"chunkhash"}].js`,assetModuleFilename:"assets/[hash][ext][query]",library:{name:d,type:"window"},globalObject:"window",chunkLoadingGlobal:`webpackJsonp_${d}`,pathinfo:g,clean:!0,publicPath:r,asyncChunks:!0,charset:!0};let J={main:k("@app/entry")};l.entry&&("string"==typeof l.entry?J=l.entry:Object.keys(l.entry)&&Object.assign(J,l.entry)),l.output&&("string"==typeof l.output?outputConfig.path=l.output:Object.keys(l.output)&&Object.assign(outputConfig,l.output));let R=l.basename.split("/").filter(Boolean).length,U=`${Array(R).fill("..").join("/")+(R?"/":"")}404.html`,{pathSegmentsToKeep:_=R,path:q=U}=l.fixBrowserRouter||{},z=!1;l.cacheDirectory&&(z={type:"filesystem",store:"pack",allowCollectingMemory:!0,cacheDirectory:l.cacheDirectory,memoryCacheUnaffected:!0,name:`${f||"default"}-${g?"development":"production"}`,version:h});export const clientConfig={entry:J,stats:"errors-only",cache:z,infrastructureLogging:{level:"none"},target:"web",externalsPresets:l.externalsPresets,plugins:[new O,...c,L&&new L({fix:!0,threads:!0,extensions:["js","md","mdx","cjs","ejs","mjs","jsx","ts","tsx","json","html","coffee","vue"]}),K&&new K({fix:!0,threads:!0,extensions:["css","scss","sass","less","ts","tsx","js","jsx"],exclude:["node_modules/","es/","lib/","docs/","coverage/","dist/"]}),l.htmlPluginOption&&new s(p),l.fixBrowserRouter&&new s({filename:q,inject:!1,templateContent:()=>`<html html><head><title>${p.title}</title><script>var pathSegmentsToKeep = ${_||R};var l = window.location;l.replace(l.protocol + '//' + l.hostname + (l.port ? ':' + l.port : '') + l.pathname.split('/').slice(0, 1 + pathSegmentsToKeep).join('/') + '/?/' + l.pathname.slice(1).split('/').slice(pathSegmentsToKeep).join('/').replace(/&/g, '~and~') + (l.search ? '&' + l.search.slice(1).replace(/&/g, '~and~') : '') + l.hash);</script></head><body></body></html>`}),new t(F),w&&new a(e=>!!(e.match(/main\.(.*)\.bundle.js$/)||e.match("main.bundle.js"))),new P({"process.env":JSON.stringify(l.env)}),new S({paths:[/\.d\.ts$/]}),l.sourceMap&&new M(l.sourceMap),l.bar&&new n(l.bar),new i({done:()=>{!g&&l.seo&&x(),l.done?.(),g||setTimeout(()=>{process.exit(0)},2e3)}}),new C($),...l.plugins].filter(Boolean),experiments:{topLevelAwait:!0,asyncWebAssembly:!0,cacheUnaffected:!0,layers:!0,lazyCompilation:g&&{imports:!1,entries:!1},buildHttp:l.buildHttp,backCompat:!0,futureDefaults:!1,css:!1,outputModule:!1},resolve:{extensions:[".tsx",".ts",".js",".jsx",".wasm"],alias:l.alias,fallback:{path:!1,fs:!1,crypto:!1,assert:!1}},module:m,externals:l.externals,output:outputConfig};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
export default /**
|
|
2
2
|
* 向 html-webpack-plugin 导出的 HTML 模板 script 添加属性
|
|
3
3
|
* ```javascript
|
|
4
4
|
* // 假设输出 main chunk 为 main.[hash].chunk.js。
|
|
@@ -8,12 +8,11 @@ import t from"html-webpack-plugin";export default /**
|
|
|
8
8
|
* })),
|
|
9
9
|
* ```
|
|
10
10
|
*/class{// eslint-disable-next-line no-unused-vars
|
|
11
|
-
constructor(t){this.entryMatchCallback=t}apply(
|
|
12
|
-
let
|
|
13
|
-
//
|
|
14
|
-
// (constructor) => constructor && constructor.name === 'HtmlWebpackPlugin',
|
|
11
|
+
constructor(t){this.entryMatchCallback=t}apply(t){t.hooks.compilation.tap("AddEntryAttributeWebpackPlugin",a=>{// 通过最终的 webpack 配置的 plugins 属性,根据插件的 constructor.name 拿到 html-webpack-plugin 实例
|
|
12
|
+
let e=t.options.plugins.map(({constructor:t})=>t).find(t=>t&&"HtmlWebpackPlugin"===t.name);// .find(
|
|
13
|
+
// (plugin) => plugin instanceof HtmlWebpackPlugin,
|
|
15
14
|
// ) as typeof HtmlWebpackPlugin;
|
|
16
|
-
|
|
17
|
-
let t=
|
|
15
|
+
if(e){// 获取 html-webpack-plugin 所有的 hooks
|
|
16
|
+
let t=e.getHooks(a);// 在插入标签之前做些什么
|
|
18
17
|
t.alterAssetTagGroups.tap("AddEntryAttributeWebpackPlugin",t=>(// 拿到所有的标签,如果是 script 标签,并且满足我们的匹配函数,则将其 attributes['entry'] 设为 true
|
|
19
18
|
t.headTags.forEach(t=>{"script"===t.tagName&&this.entryMatchCallback(t.attributes.src)&&(t.attributes.entry=!0)}),t))}})}}
|
package/lib/module.config.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import e from"mini-css-extract-plugin";import s from"mini-svg-data-uri";import{CONFIG as o,PUBLICPATH as t}from"./config.js";import{hasPkg as l}from"./has-pkg.js";import r from"./modify-vars.js";import a from"./paths.js";import{FRAMEWORK as i,isDev as n,isMicro as c}from"./process-env.js";import m from"./swcrc.js";import p from"./tsloader.config.js";import{resolveNodeModulesPath as d,resolveProgramPath as u}from"./utils.js";let f={loader:`${a.corePath}/loader/css-unicode.cjs`},y=c?t:"../",x={loader:e.loader,options:{publicPath:"/"!==y?y:"../"}},$=l("@moneko/postcss")&&{loader:"postcss-loader",options:{postcssOptions:await import("@moneko/postcss")}};n&&(x="style-loader");let g=[...o.cssModules,`@moneko/${i}`,"neko-ui"].map(d),j=[...["src/styles/variables.less","src/styles/mixins.less","site/styles/variables.less","site/styles/mixins.less"].map(u)],v=["components","example","mock","site","src","server"].map(u),w=[x,n&&{loader:"@teamsupercell/typings-for-css-modules-loader",options:{verifyOnly:!n}},{loader:"css-loader",options:{modules:{// 根据文件名觉得是否启用cssModules | 排除 node_modules 和 *global.css 和 *global.less
|
|
2
2
|
auto:e=>{for(let s=0,o=g.length;s<o;s++)if(e&&e?.includes(g[s]))return/(.*(?<!\.?global\.(le|c)ss)$)/i.test(e);return/(^(?!.*node_modules))(.*(?<!\.?global\.(le|c)ss)$)/i.test(e)},// localIdentName: isDev ? '[path][name]__[local]' : '[hash:base64]',
|
|
3
|
-
localIdentName:"[path][name]__[local]",exportLocalsConvention:"dashesOnly"},importLoaders:2}},$,f,{loader:"less-loader",options:{sourceMap:!!o.sourceMap,lessOptions:{modifyVars:r,javascriptEnabled:!0}}},{loader:"style-resources-loader",options:{patterns:j}}].filter(Boolean),b={loader:"tsc"===o.compiler?"ts-loader":"swc-loader",options:"tsc"===o.compiler?p:m(n)},h=v.concat(o.rulesInclude?.media?.map(d)||[]),I=v.concat(o.rulesInclude?.fonts?.map(d)||[]),k=v.concat(o.rulesInclude?.less?.map(d)||[]),O=v.concat(o.rulesInclude?.css?.map(d)||[]),B=v.concat(o.rulesInclude?.js?.map(d)||[]),L=v.concat(o.rulesInclude?.wasm?.map(d)||[]),M={rules:[{test:/\.mdx?$/i,include:[u("components")],exclude:[/(.+)\/examples\/(.+).mdx?$/i],enforce:"pre",use:[{loader:`${a.corePath}/loader/frontmatter.cjs`}]},{oneOf:[{
|
|
3
|
+
localIdentName:"[path][name]__[local]",exportLocalsConvention:"dashesOnly"},importLoaders:2}},$,f,{loader:"less-loader",options:{sourceMap:!!o.sourceMap,lessOptions:{modifyVars:r,javascriptEnabled:!0}}},{loader:"style-resources-loader",options:{patterns:j}}].filter(Boolean),b={loader:"tsc"===o.compiler?"ts-loader":"swc-loader",options:"tsc"===o.compiler?p:m(n)},h=v.concat(o.rulesInclude?.media?.map(d)||[]),I=v.concat(o.rulesInclude?.fonts?.map(d)||[]),k=v.concat(o.rulesInclude?.less?.map(d)||[]),O=v.concat(o.rulesInclude?.css?.map(d)||[]),B=v.concat(o.rulesInclude?.js?.map(d)||[]),L=v.concat(o.rulesInclude?.wasm?.map(d)||[]),M={rules:[{resourceQuery:/raw/i,type:"asset/source"},{test:/\.mdx?$/i,include:[u("components")],exclude:[/(.+)\/examples\/(.+).mdx?$/i],enforce:"pre",use:[{loader:`${a.corePath}/loader/frontmatter.cjs`}]},{oneOf:[{test:/\.wasm$/i,type:"webassembly/async",include:L},{test:/\.txt$/i,type:"asset/source"},{test:/\.ico$/i,type:"asset/inline",include:h},{test:/\.svg$/i,type:"asset/inline",generator:{dataUrl:e=>s("string"!=typeof e?e.toString():e)},include:h},{test:/\.(gif|png|jpe?g|mp4)$/i,type:"asset",dependency:{not:["url"]},generator:{filename:"assets/images/[name][ext][query]"},include:h},{test:/\.(eot|ttf|otf|woff|woff2)$/i,type:"asset",generator:{filename:"assets/fonts/[name][ext][query]"},include:I},{test:/\.less$/i,use:w,include:k},{test:/\.css$/i,use:[x,"css-loader",$,f].filter(Boolean),include:O},{test:/\.(cj|mj|t|j)s(|x)$/i,use:[...o.prefixJsLoader,b].filter(Boolean),include:B},{test:/\.mdx?$/i,use:[...o.prefixJsLoader,b,{loader:"@mdx-js/loader",options:o.mdx}].filter(Boolean),include:v,exclude:[/(.+)\/examples\/(.+).mdx?$/i]},{test:/\.mdx?$/i,type:"asset/source",include:[/(.+)\/examples\/(.+).mdx?$/i]},{type:"asset/source",include:[/(.+)\/examples\/(.+).*?$/i]}]},...o.moduleRules]};export default M;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@moneko/core",
|
|
3
|
-
"version": "3.1.5-beta.
|
|
3
|
+
"version": "3.1.5-beta.3",
|
|
4
4
|
"description": "core",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"type": "module",
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
"ts-import-plugin": "3.0.0",
|
|
38
38
|
"ts-loader": "9.5.0",
|
|
39
39
|
"typescript": "5.2.2",
|
|
40
|
-
"webpack": "5.
|
|
40
|
+
"webpack": "5.77.0",
|
|
41
41
|
"webpack-bundle-analyzer": "4.9.1",
|
|
42
42
|
"webpack-cli": "5.1.4",
|
|
43
43
|
"webpack-dev-server": "4.15.1",
|