Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitc5d8fab

Browse files
author
Johannes
committed
- Introduced webpack bundler for rewire (work in progress, some tests are not running)
1 parent657b9e8 commitc5d8fab

23 files changed

+747
-450
lines changed

‎lib/browserify/browserifyMiddleware.js

Lines changed: 0 additions & 100 deletions
This file was deleted.
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
varsetterSrc=require("../../__set__.js").toString(),
2+
getterSrc=require("../../__get__.js").toString(),
3+
path=require("path"),
4+
injectRewire=require("../injectRewire.js"),
5+
getRewireRequires=require("../getRewireRequires.js"),
6+
7+
rewireIndex=path.resolve(__dirname,"../../index.js"),
8+
settersAndGettersSrc;
9+
10+
functionbrowserifyMiddleware(b){
11+
functiondoInjectRewire(src,filename){
12+
varrewireRequires;
13+
14+
// Search for all rewire() statements an return the required path.
15+
rewireRequires=getRewireRequires(src);
16+
17+
// Add all modules that are loaded by rewire() manually to browserify because browserify's
18+
// require-sniffing doesn't work here.
19+
rewireRequires.forEach(functionforEachRewireRequire(requirePath){
20+
// Resolve absolute paths
21+
if(requirePath.charAt(0)==="."){
22+
requirePath=path.resolve(path.dirname(filename),requirePath);
23+
}
24+
b.require(requirePath);
25+
});
26+
27+
src=injectRewire(src,filename,settersAndGettersSrc);
28+
29+
returnsrc;
30+
}
31+
32+
functionforwardBrowserifyRewire(filename){
33+
if(filename===rewireIndex){
34+
filename=__dirname+"/browserifyRewire.js";
35+
}
36+
37+
returnfilename;
38+
}
39+
40+
// Register file handler
41+
b.register(".js",doInjectRewire);
42+
b.register("path",forwardBrowserifyRewire);
43+
44+
returnb;
45+
}
46+
47+
/**
48+
* This string gets injected at the beginning of every module. Its purpose is to
49+
* - register the setters and getters according to the module's filename
50+
* - override the internal require with a require proxy.
51+
*
52+
*@private
53+
*@type {String}
54+
*/
55+
settersAndGettersSrc=(
56+
'var rewire = require("rewire"); '+
57+
// Registers the setters and getters of every module according to their filename. The setters and getters must be
58+
// injected as string here to gain access to the private scope of the module.
59+
'rewire.register(__filename, module, '+setterSrc+', '+getterSrc+');'+
60+
// Overrides the module internal require with a require proxy. This proxy is necessary to call rewire with the
61+
// module's filename at the first parameter to resolve the path. This way rewire() works exactly like require().
62+
'require = rewire.getProxy(require, __dirname);'+
63+
// Cleaning up
64+
'rewire = undefined;'
65+
).replace(/\s+/g," ");// strip out unnecessary spaces to be unobtrusive in the debug view
66+
67+
module.exports=browserifyMiddleware;

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp