Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
nobita457
webpack_ast
提交
4b1c8a22
W
webpack_ast
项目概览
nobita457
/
webpack_ast
与 Fork 源项目一致
Fork自
渔滒 / webpack_ast
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
W
webpack_ast
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
4b1c8a22
编写于
9月 01, 2021
作者:
5
592767809
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
更新
上级
20e1f5dc
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
96 addition
and
5 deletion
+96
-5
webpack_mixer.js
webpack_mixer.js
+96
-0
球探/qiutan.js
球探/qiutan.js
+0
-5
未找到文件。
webpack_mixer.js
0 → 100644
浏览文件 @
4b1c8a22
const
parser
=
require
(
"
@babel/parser
"
);
const
t
=
require
(
"
@babel/types
"
);
const
generator
=
require
(
"
@babel/generator
"
);
const
fs
=
require
(
"
fs
"
);
function
wtofile
(
path
,
flags
,
code
)
{
var
fd
=
fs
.
openSync
(
path
,
flags
);
fs
.
writeSync
(
fd
,
code
);
fs
.
closeSync
(
fd
);
}
function
run
(
loader_path
,
out_path
,
modular_path
)
{
var
jscode
=
fs
.
readFileSync
(
loader_path
,
{
encoding
:
"
utf-8
"
});
// 转换为AST语法树
let
loader_ast
=
parser
.
parse
(
jscode
);
// 获取加载器代码
let
loader_body
=
loader_ast
.
program
.
body
[
0
].
expression
.
argument
.
callee
.
body
.
body
;
for
(
let
i
=
0
;
i
<
loader_body
.
length
;
i
++
){
if
(
loader_body
[
i
].
type
===
'
VariableDeclaration
'
){
loader_ast
.
program
.
body
[
0
].
expression
.
argument
.
callee
.
body
.
body
.
splice
(
i
+
3
,
(
loader_body
.
length
-
i
-
3
));
loader_ast
.
program
.
body
[
0
].
expression
.
argument
.
callee
.
body
.
body
.
splice
(
0
,
i
);
loader_ast
.
program
.
body
[
0
].
expression
.
argument
.
callee
.
body
.
body
.
push
(
t
.
assignmentExpression
(
"
=
"
,
t
.
identifier
(
"
export_function
"
),
t
.
identifier
(
loader_ast
.
program
.
body
[
0
].
expression
.
argument
.
callee
.
body
.
body
[
1
].
id
.
name
)));
break
}
}
// 修改加载器参数类型
let
loader_arguments
=
loader_ast
.
program
.
body
[
0
].
expression
.
argument
.
arguments
[
0
]
=
t
.
objectExpression
([]);
// 加载函数体
modular_path
.
forEach
(
function
(
item
,
index
)
{
var
jscode
=
fs
.
readFileSync
(
item
,
{
encoding
:
"
utf-8
"
});
let
modular_ast
=
parser
.
parse
(
jscode
);
modular_ast
.
program
.
body
[
0
].
expression
.
arguments
[
0
].
elements
.
forEach
(
function
(
item2
,
index2
)
{
if
(
item2
.
type
===
'
ArrayExpression
'
){
item2
.
elements
.
forEach
(
function
(
item3
,
index3
)
{
if
(
item3
&&
item3
.
type
===
'
FunctionExpression
'
){
loader_arguments
.
properties
.
push
(
t
.
objectProperty
(
t
.
numericLiteral
(
index3
),
item3
,
false
,
false
));
}
});
}
else
{
item2
.
properties
.
forEach
(
function
(
item3
,
index3
)
{
loader_arguments
.
properties
.
push
(
item3
)
})
}
});
});
// 申请全局导出函数
loader_ast
.
program
.
body
.
splice
(
0
,
0
,
t
.
variableDeclaration
(
"
var
"
,[
t
.
variableDeclarator
(
t
.
identifier
(
"
export_function
"
))]));
let
code
=
generator
.
default
(
loader_ast
,
{
compact
:
true
,
// 压缩格式
comments
:
false
,
// 注释
jsescOption
:
{
minimal
:
false
// 转义
}
}).
code
;
wtofile
(
out_path
,
'
w
'
,
code
);
}
!
function
()
{
let
loader_path
,
out_path
;
let
modular_path
=
[];
for
(
let
i
=
0
;
i
<
process
.
argv
.
length
;
i
++
){
if
(
process
.
argv
[
i
]
===
'
-l
'
){
loader_path
=
process
.
argv
[
i
+
1
]
}
else
if
(
process
.
argv
[
i
]
===
'
-m
'
){
modular_path
.
push
(
process
.
argv
[
i
+
1
])
}
else
if
(
process
.
argv
[
i
]
===
'
-o
'
){
out_path
=
process
.
argv
[
i
+
1
]
}
}
if
(
loader_path
&&
out_path
&&
modular_path
.
length
>
0
){
run
(
loader_path
,
out_path
,
modular_path
)
}
}();
球探/qiutan.js
浏览文件 @
4b1c8a22
...
...
@@ -73,9 +73,4 @@ wtofile('webpack_out.js', 'w', code);
// var a = export_function(156);
// var i = export_function.n(a);
// var t = "1212121212121";
// var n = i()(t);
// console.log(n);
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录