0%

npm库-pirates

pirates:require 劫持

可以在 require 另一个 module 的时候对原代码进行修改

priates-exp.js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
const addHook = require('pirates').addHook;

function matcher(filename) {
return true;
}


const revert = addHook(
(code, filename) => code.replace(/@@foo/g, "console.log('foo');"),
{ exts: ['.js'], matcher },
);

const add = require('./add');
// revert();

add.js

1
2
3
4
5
6
7
8
9
10
11
12
13
@@foo

@@foo

@@foo

@@foo

@@foo

// 这明显不是一个正常的js文件

// 所有的@@foo会被替换成console.log('foo');
0172b2ed-387c-4e61-ae94-27c96cf270bf