| OLD | NEW |
| 1 /* This Source Code Form is subject to the terms of the Mozilla Public | 1 /* This Source Code Form is subject to the terms of the Mozilla Public |
| 2 * License, v. 2.0. If a copy of the MPL was not distributed with this | 2 * License, v. 2.0. If a copy of the MPL was not distributed with this |
| 3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ | 3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
| 4 | 4 |
| 5 "use strict"; | 5 "use strict"; |
| 6 | 6 |
| 7 const path = require("path"); | 7 const path = require("path"); |
| 8 const process = require("process"); | 8 const process = require("process"); |
| 9 | 9 |
| 10 const MemoryFS = require("memory-fs"); | 10 const MemoryFS = require("memory-fs"); |
| 11 const webpack = require("webpack"); | 11 const webpack = require("webpack"); |
| 12 | 12 |
| 13 // We read the configuration from STDIN rather than as an argument to improve | 13 // We read the configuration from STDIN rather than as an argument to improve |
| 14 // the output on error. Otherwise the (fairly huge) configuration is printed | 14 // the output on error. Otherwise the (fairly huge) configuration is printed |
| 15 // along with the actual error message. | 15 // along with the actual error message. |
| 16 let inputChunks = []; | 16 let inputChunks = []; |
| 17 process.stdin.setEncoding("utf-8"); | 17 process.stdin.setEncoding("utf-8"); |
| 18 process.stdin.on("data", chunk => { inputChunks.push(chunk); }); | 18 process.stdin.on("data", chunk => { inputChunks.push(chunk); }); |
| 19 process.stdin.on("end", () => | 19 process.stdin.on("end", () => |
| 20 { | 20 { |
| 21 let {bundles, extension_path, | 21 let {bundles, extension_path, |
| 22 info_module, resolve_paths} = JSON.parse(inputChunks.join("")); | 22 info_module, resolve_paths, aliases} = JSON.parse(inputChunks.join("")); |
| 23 | 23 |
| 24 // The contents of the info module is passed to us as a string from the Python | 24 // The contents of the info module is passed to us as a string from the Python |
| 25 // packager and we pass it through to our custom loader now so it is available | 25 // packager and we pass it through to our custom loader now so it is available |
| 26 // at bundle time. | 26 // at bundle time. |
| 27 require("./info-loader").setInfoModule(info_module); | 27 require("./info-loader").setInfoModule(info_module); |
| 28 | 28 |
| 29 // Since the cost of starting Node.js and loading all the modules is hugely | 29 // Since the cost of starting Node.js and loading all the modules is hugely |
| 30 // larger than actually producing bundles we avoid paying it multiple times, | 30 // larger than actually producing bundles we avoid paying it multiple times, |
| 31 // instead producing all the bundles in one go. | 31 // instead producing all the bundles in one go. |
| 32 let options = []; | 32 let options = []; |
| (...skipping 11 matching lines...) Expand all Loading... |
| 44 entry: entry_points, | 44 entry: entry_points, |
| 45 output: { | 45 output: { |
| 46 path: path.resolve(""), | 46 path: path.resolve(""), |
| 47 filename: bundle_name | 47 filename: bundle_name |
| 48 }, | 48 }, |
| 49 node: { | 49 node: { |
| 50 global: false | 50 global: false |
| 51 }, | 51 }, |
| 52 resolve: { | 52 resolve: { |
| 53 modules: resolve_paths, | 53 modules: resolve_paths, |
| 54 alias: { | 54 alias: aliases, |
| 55 // To use our custom loader for the info module we must first set up | |
| 56 // an alias to a file that exists. | |
| 57 info$: path.join(__dirname, "info.js"), | |
| 58 // Prevent builtin Node.js modules from being used instead of our own | |
| 59 // when the names clash. Once relative paths are used this won't be | |
| 60 // necessary. | |
| 61 url$: "url.js", | |
| 62 events$: "events.js", | |
| 63 punycode$: "punycode.js" | |
| 64 }, | |
| 65 plugins: [ | 55 plugins: [ |
| 66 function() | 56 function() |
| 67 { | 57 { |
| 68 // Our old module system in packagerChrome.py used to prefix | 58 // Our old module system in packagerChrome.py used to prefix |
| 69 // module names with the name of their parent directory and an | 59 // module names with the name of their parent directory and an |
| 70 // underscore - but only when that directory wasn't called | 60 // underscore - but only when that directory wasn't called |
| 71 // "lib". This plugin is for backwards compatability, but can | 61 // "lib". This plugin is for backwards compatability, but can |
| 72 // be removed once use of that deprecated syntax has been | 62 // be removed once use of that deprecated syntax has been |
| 73 // replaced. | 63 // replaced. |
| 74 this.plugin("described-resolve", (request, callback) => | 64 this.plugin("described-resolve", (request, callback) => |
| (...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 149 included.add(path.relative(extension_path, module.name)); | 139 included.add(path.relative(extension_path, module.name)); |
| 150 } | 140 } |
| 151 } | 141 } |
| 152 } | 142 } |
| 153 output.included = Array.from(included); | 143 output.included = Array.from(included); |
| 154 | 144 |
| 155 console.log(JSON.stringify(output)); | 145 console.log(JSON.stringify(output)); |
| 156 } | 146 } |
| 157 }); | 147 }); |
| 158 }); | 148 }); |
| OLD | NEW |