Remove negative lookbehind from Rollup plugin that broke Node <= v8.9 (#13538)
Brian Vaughn committed
Sep 2, 2018 at 17:59 UTC
8a1e3962ab189b99b1593d8431feabcb4a21211b
1 file changed
+9
-3
scripts/rollup/plugins/strip-unused-imports.js
+9
-3
@@ -6,16 +6,22 @@
6
*/
7
'use strict';
8
9
-module.exports = function sizes(pureExternalModules) {
9
+module.exports = function stripUnusedImports(pureExternalModules) {
10
return {
11
name: 'scripts/rollup/plugins/strip-unused-imports',
12
transformBundle(code) {
13
pureExternalModules.forEach(module => {
14
+ // Ideally this would use a negative lookbehind: (?<!= *)
15
+ // But this isn't supported by the Node <= 8.9.
16
+ // So instead we try to handle the most common cases:
17
+ // 1. foo,bar=require("bar"),baz
18
+ // 2. foo;bar = require('bar');baz
19
+ // 3. require('bar');
20
const regExp = new RegExp(
15
- `(?<!= *)require\\(["']${module}["']\\)[,;]`,
21
+ `([,;]| {2})require\\(["']${module}["']\\)[,;]`,
22
'g'
23
);
18
- code = code.replace(regExp, '');
24
+ code = code.replace(regExp, '$1');
25
});
26
return {code};
27
},