UNPKG

3.79 kBJavaScriptView Raw
1"use strict";
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.getRollupConfigs = getRollupConfigs;
7
8var _package = require("../package");
9
10var _rollup = require("./rollup");
11
12var _sarcastic = _interopRequireDefault(require("sarcastic"));
13
14function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
16function getGlobals(pkg) {
17 let stuff = [];
18
19 if (pkg.peerDependencies) {
20 stuff.push(...Object.keys(pkg.peerDependencies));
21 }
22
23 if (pkg.dependencies) {
24 stuff.push(...Object.keys(pkg.dependencies));
25 }
26
27 if (stuff.length === 0) {
28 return {};
29 }
30
31 let peerDeps = pkg.peerDependencies ? Object.keys(pkg.peerDependencies) : [];
32 return peerDeps.reduce((obj, pkgName) => {
33 obj[pkgName] = pkg.project.global(pkgName);
34 return obj;
35 }, {});
36}
37
38function getRollupConfigs(pkg, aliases) {
39 let configs = [];
40 let strictEntrypoints = pkg.entrypoints.map(x => x.strict());
41 let hasModuleField = strictEntrypoints[0].module !== null;
42 configs.push({
43 config: (0, _rollup.getRollupConfig)(pkg, strictEntrypoints, aliases, "node-dev"),
44 outputs: [{
45 format: "cjs",
46 entryFileNames: "[name].cjs.dev.js",
47 chunkFileNames: "dist/[name]-[hash].cjs.dev.js",
48 dir: pkg.directory,
49 exports: "named"
50 }, ...(hasModuleField ? [{
51 format: "es",
52 entryFileNames: "[name].esm.js",
53 chunkFileNames: "dist/[name]-[hash].esm.js",
54 dir: pkg.directory
55 }] : [])]
56 });
57 configs.push({
58 config: (0, _rollup.getRollupConfig)(pkg, strictEntrypoints, aliases, "node-prod"),
59 outputs: [{
60 format: "cjs",
61 entryFileNames: "[name].cjs.prod.js",
62 chunkFileNames: "dist/[name]-[hash].cjs.prod.js",
63 dir: pkg.directory,
64 exports: "named"
65 }]
66 }); // umd builds are a bit special
67 // we don't guarantee that shared modules are shared across umd builds
68 // this is just like dependencies, they're bundled into the umd build
69
70 if (strictEntrypoints[0].umdMain !== null) pkg.entrypoints.map(x => x.strict()).forEach(entrypoint => {
71 let umdName = (0, _sarcastic.default)(entrypoint._config.umdName, _sarcastic.default.string);
72 (0, _sarcastic.default)(entrypoint.umdMain, _sarcastic.default.string);
73 configs.push({
74 config: (0, _rollup.getRollupConfig)(pkg, [entrypoint], aliases, "umd"),
75 outputs: [{
76 format: "umd",
77 sourcemap: true,
78 entryFileNames: "[name].umd.min.js",
79 name: umdName,
80 dir: pkg.directory,
81 globals: getGlobals(pkg)
82 }]
83 });
84 });
85 let hasBrowserField = strictEntrypoints[0].browser !== null;
86
87 if (hasBrowserField) {
88 configs.push({
89 config: (0, _rollup.getRollupConfig)(pkg, strictEntrypoints, aliases, "browser"),
90 outputs: [{
91 format: "cjs",
92 entryFileNames: "[name].browser.cjs.js",
93 chunkFileNames: "dist/[name]-[hash].browser.cjs.js",
94 dir: pkg.directory,
95 exports: "named"
96 }, ...(hasModuleField ? [{
97 format: "es",
98 entryFileNames: "[name].browser.esm.js",
99 chunkFileNames: "dist/[name]-[hash].browser.esm.js",
100 dir: pkg.directory
101 }] : [])]
102 });
103 }
104
105 if (strictEntrypoints[0].reactNative !== null) {
106 configs.push({
107 config: (0, _rollup.getRollupConfig)(pkg, strictEntrypoints, aliases, "react-native"),
108 outputs: [{
109 format: "cjs",
110 entryFileNames: "[name].native.cjs.js",
111 chunkFileNames: "dist/[name]-[hash].native.cjs.js",
112 dir: pkg.directory,
113 exports: "named"
114 }, ...(hasModuleField ? [{
115 format: "es",
116 entryFileNames: "[name].native.esm.js",
117 chunkFileNames: "dist/[name]-[hash].native.esm.js",
118 dir: pkg.directory
119 }] : [])]
120 });
121 }
122
123 return configs;
124}
\No newline at end of file