UNPKG

1.94 kBJavaScriptView Raw
1var asap = require("pdenodeify");
2var path = require("path");
3var through = require("through2");
4var fs = require("fs-extra");
5var npmUtils = require("steal/ext/npm-utils");
6var tags = require("common-tags");
7
8module.exports = function(){
9 return through.obj(function(data, enc, done){
10 addConfiguredSteal(data)
11 .then(function(){
12 done(null, data);
13 }, function(err){
14 done(err);
15 });
16 });
17};
18
19function addConfiguredSteal(data) {
20 var options = data.options;
21 var configuration = data.configuration;
22
23 var stealFilename = options.bundlePromisePolyfill ?
24 "steal-with-promises.production.js" :
25 "steal.production.js";
26
27 var stealProductionDest = path.join(configuration.dest, stealFilename);
28
29 // Don't do this if we are bundling steal
30 if (options.bundleSteal) {
31 return Promise.resolve();
32 }
33
34 var stealProject = require.resolve("steal");
35 var stealPath = path.join(path.dirname(stealProject), stealFilename);
36
37 return asap(fs.readFile)(stealPath, "utf8")
38 .then(function(src){
39 return appendConfig(src, data);
40 })
41 .then(function(src){
42 return asap(fs.outputFile)(stealProductionDest, src, "utf8");
43 });
44}
45
46function appendConfig(src, data) {
47 var main = data.mains[0];
48 var configMain = data.steal.System.configMain;
49
50 var configSrc = tags.stripIndent`
51 if(typeof steal === "undefined") steal = {};
52 steal.bundlesPath = "bundles";
53 steal.main = "${ denormalize(main) }";
54 steal.configMain = "${ configMain }";
55 steal.loadMainOnStartup = true;
56 `;
57
58 return configSrc + "\n" + src;
59}
60
61function denormalize(name) {
62 if(npmUtils.moduleName.isNpm(name)) {
63 var parsed = npmUtils.moduleName.parse(name);
64 name = parsedToFriendly(parsed);
65
66 if(parsed.plugin) {
67 var parsedPlugin = npmUtils.moduleName.parse(parsed.plugin.substr(1));
68 name += "!" + parsedToFriendly(parsedPlugin);
69 }
70 }
71 return name;
72}
73
74function parsedToFriendly(parsed) {
75 var name = parsed.packageName + "/" + parsed.modulePath;
76 return name;
77}