UNPKG

3.95 kBJavaScriptView Raw
1var path = require('path');
2
3var mjsStub = path.join(__dirname, 'mjs-stub');
4
5var extensions = {
6 '.babel.js': [
7 {
8 module: '@babel/register',
9 register: function(hook) {
10 // register on .js extension due to https://github.com/joyent/node/blob/v0.12.0/lib/module.js#L353
11 // which only captures the final extension (.babel.js -> .js)
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 // register on .js extension due to https://github.com/joyent/node/blob/v0.12.0/lib/module.js#L353
54 // which only captures the final extension (.babel.js -> .js)
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
138var 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
162module.exports = {
163 extensions: extensions,
164 jsVariants: jsVariantExtensions.reduce(function(result, ext) {
165 result[ext] = extensions[ext];
166 return result;
167 }, {}),
168};