|
1 | 1 | 'use strict';
|
2 | 2 |
|
3 |
| -if (global._cssModulesPolyfill) { |
4 |
| - throw new Error('only one instance of css-modules/polyfill is allowed'); |
5 |
| -} |
6 |
| - |
7 |
| -global._cssModulesPolyfill = true; |
8 |
| - |
9 |
| -var assign = require('object-assign'); |
10 |
| -var options = {}; |
| 3 | +var path = require('path'); |
11 | 4 |
|
12 |
| -/** |
13 |
| - * Posibility to pass custom options to the module |
14 |
| - * @param {object} opts |
15 |
| - */ |
16 |
| -module.exports = function (opts) { |
17 |
| - assign(options, opts); |
| 5 | +var escape = function (str) { |
| 6 | + return str.replace(/[\[\]\/{}()*+?.\\^$|-]/g, '\\$&'); |
18 | 7 | };
|
19 | 8 |
|
20 |
| -var Core = require('css-modules-loader-core'); |
21 |
| -var pluginsCache; |
22 |
| - |
23 |
| -/** |
24 |
| - * Caching plugins for the future calls |
25 |
| - * @return {array} |
26 |
| - */ |
27 |
| -function loadPlugins() { |
28 |
| - // retrieving from cache if they are already loaded |
29 |
| - if (pluginsCache) { |
30 |
| - return pluginsCache; |
31 |
| - } |
32 |
| - |
33 |
| - // PostCSS plugins passed to FileSystemLoader |
34 |
| - var plugins = options.use || options.u; |
35 |
| - if (!plugins) { |
36 |
| - plugins = Core.defaultPlugins; |
37 |
| - } else { |
38 |
| - if (typeof plugins === 'string') { |
39 |
| - plugins = [ plugins ]; |
40 |
| - } |
41 |
| - |
42 |
| - plugins = plugins.map(function requirePlugin (name) { |
43 |
| - // assume functions are already required plugins |
44 |
| - if (typeof name === 'function') { |
45 |
| - return name; |
46 |
| - } |
47 |
| - |
48 |
| - var plugin = require(require.resolve(name)); |
| 9 | +var regexp = ['src', 'test'].map(function (i) { |
| 10 | + return '^' + escape(path.join(__dirname, i) + path.sep); |
| 11 | +}).join('|'); |
49 | 12 |
|
50 |
| - // custom scoped name generation |
51 |
| - if (name === 'postcss-modules-scope') { |
52 |
| - options[name] = options[name] || {}; |
53 |
| - options[name].generateScopedName = createScopedNameFunc(plugin); |
54 |
| - } |
| 13 | +require('babel/register')({ |
| 14 | + only: new RegExp('(' + regexp + ')'), |
| 15 | + ignore: false, |
| 16 | + loose: 'all' |
| 17 | +}); |
55 | 18 |
|
56 |
| - if (name in options) { |
57 |
| - plugin = plugin(options[name]); |
58 |
| - } else { |
59 |
| - plugin = plugin.postcss || plugin(); |
60 |
| - } |
61 |
| - |
62 |
| - return plugin; |
63 |
| - }); |
64 |
| - } |
65 |
| - |
66 |
| - return pluginsCache = plugins; |
67 |
| -} |
68 |
| - |
69 |
| -var FileSystemLoader = require('css-modules-loader-core/lib/file-system-loader'); |
70 |
| -var path = require('path'); |
71 |
| - |
72 |
| -require.extensions['.css'] = function (m, filename) { |
73 |
| - var plugins = loadPlugins(); |
74 |
| - var loader = new FileSystemLoader(path.dirname(filename), plugins); |
75 |
| - var tokens = loader.fetchSync(path.basename(filename), '/'); |
76 |
| - |
77 |
| - return m._compile('module.exports = ' + JSON.stringify(tokens), filename); |
78 |
| -}; |
| 19 | +module.exports = require('./src'); |
0 commit comments