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 |