1 | var path = require('path');
|
2 |
|
3 | var mjsStub = path.join(__dirname, 'mjs-stub');
|
4 |
|
5 | var extensions = {
|
6 | '.babel.js': [
|
7 | {
|
8 | module: '@babel/register',
|
9 | register: function(hook) {
|
10 |
|
11 |
|
12 | hook({ extensions: '.js' });
|
13 | },
|
14 | },
|
15 | {
|
16 | module: 'babel-register',
|
17 | register: function(hook) {
|
18 | hook({ extensions: '.js' });
|
19 | },
|
20 | },
|
21 | {
|
22 | module: 'babel-core/register',
|
23 | register: function(hook) {
|
24 | hook({ extensions: '.js' });
|
25 | },
|
26 | },
|
27 | {
|
28 | module: 'babel/register',
|
29 | register: function(hook) {
|
30 | hook({ extensions: '.js' });
|
31 | },
|
32 | },
|
33 | ],
|
34 | '.babel.ts': [
|
35 | {
|
36 | module: '@babel/register',
|
37 | register: function(hook) {
|
38 | hook({ extensions: '.ts' });
|
39 | },
|
40 | },
|
41 | ],
|
42 | '.buble.js': 'buble/register',
|
43 | '.cirru': 'cirru-script/lib/register',
|
44 | '.cjsx': 'node-cjsx/register',
|
45 | '.co': 'coco',
|
46 | '.coffee': ['coffeescript/register', 'coffee-script/register', 'coffeescript', 'coffee-script'],
|
47 | '.coffee.md': ['coffeescript/register', 'coffee-script/register', 'coffeescript', 'coffee-script'],
|
48 | '.csv': 'require-csv',
|
49 | '.eg': 'earlgrey/register',
|
50 | '.esm.js': {
|
51 | module: 'esm',
|
52 | register: function(hook) {
|
53 |
|
54 |
|
55 | var esmLoader = hook(module);
|
56 | require.extensions['.js'] = esmLoader('module')._extensions['.js'];
|
57 | },
|
58 | },
|
59 | '.iced': ['iced-coffee-script/register', 'iced-coffee-script'],
|
60 | '.iced.md': 'iced-coffee-script/register',
|
61 | '.ini': 'require-ini',
|
62 | '.js': null,
|
63 | '.json': null,
|
64 | '.json5': 'json5/lib/require',
|
65 | '.jsx': [
|
66 | {
|
67 | module: '@babel/register',
|
68 | register: function(hook) {
|
69 | hook({ extensions: '.jsx' });
|
70 | },
|
71 | },
|
72 | {
|
73 | module: 'babel-register',
|
74 | register: function(hook) {
|
75 | hook({ extensions: '.jsx' });
|
76 | },
|
77 | },
|
78 | {
|
79 | module: 'babel-core/register',
|
80 | register: function(hook) {
|
81 | hook({ extensions: '.jsx' });
|
82 | },
|
83 | },
|
84 | {
|
85 | module: 'babel/register',
|
86 | register: function(hook) {
|
87 | hook({ extensions: '.jsx' });
|
88 | },
|
89 | },
|
90 | {
|
91 | module: 'node-jsx',
|
92 | register: function(hook) {
|
93 | hook.install({ extension: '.jsx', harmony: true });
|
94 | },
|
95 | },
|
96 | ],
|
97 | '.litcoffee': ['coffeescript/register', 'coffee-script/register', 'coffeescript', 'coffee-script'],
|
98 | '.liticed': 'iced-coffee-script/register',
|
99 | '.ls': ['livescript', 'LiveScript'],
|
100 | '.mjs': mjsStub,
|
101 | '.node': null,
|
102 | '.toml': {
|
103 | module: 'toml-require',
|
104 | register: function(hook) {
|
105 | hook.install();
|
106 | },
|
107 | },
|
108 | '.ts': [
|
109 | 'ts-node/register',
|
110 | 'typescript-node/register',
|
111 | 'typescript-register',
|
112 | 'typescript-require',
|
113 | 'sucrase/register/ts',
|
114 | {
|
115 | module: '@babel/register',
|
116 | register: function(hook) {
|
117 | hook({ extensions: '.ts' });
|
118 | },
|
119 | },
|
120 | ],
|
121 | '.tsx': [
|
122 | 'ts-node/register',
|
123 | 'typescript-node/register',
|
124 | 'sucrase/register',
|
125 | {
|
126 | module: '@babel/register',
|
127 | register: function(hook) {
|
128 | hook({ extensions: '.tsx' });
|
129 | },
|
130 | },
|
131 | ],
|
132 | '.wisp': 'wisp/engine/node',
|
133 | '.xml': 'require-xml',
|
134 | '.yaml': 'require-yaml',
|
135 | '.yml': 'require-yaml',
|
136 | };
|
137 |
|
138 | var jsVariantExtensions = [
|
139 | '.js',
|
140 | '.babel.js',
|
141 | '.babel.ts',
|
142 | '.buble.js',
|
143 | '.cirru',
|
144 | '.cjsx',
|
145 | '.co',
|
146 | '.coffee',
|
147 | '.coffee.md',
|
148 | '.eg',
|
149 | '.esm.js',
|
150 | '.iced',
|
151 | '.iced.md',
|
152 | '.jsx',
|
153 | '.litcoffee',
|
154 | '.liticed',
|
155 | '.ls',
|
156 | '.mjs',
|
157 | '.ts',
|
158 | '.tsx',
|
159 | '.wisp',
|
160 | ];
|
161 |
|
162 | module.exports = {
|
163 | extensions: extensions,
|
164 | jsVariants: jsVariantExtensions.reduce(function(result, ext) {
|
165 | result[ext] = extensions[ext];
|
166 | return result;
|
167 | }, {}),
|
168 | };
|