Skip to content
This repository was archived by the owner on Mar 4, 2020. It is now read-only.

Commit 1929f00

Browse files
committed
rewrite bundler task
1 parent 2b7a4dd commit 1929f00

File tree

3 files changed

+155
-164
lines changed

3 files changed

+155
-164
lines changed

build/gulp/scaffold/app.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import React from 'react'
2+
import ReactDOM from 'react-dom'
3+
import { Button, Provider, themes } from '@stardust-ui/react'
4+
5+
ReactDOM.render(
6+
React.createElement(
7+
Provider,
8+
{ theme: themes.teams },
9+
React.createElement(Button, { content: 'Theming' }),
10+
),
11+
document.getElementById('root'),
12+
)

build/gulp/scaffold/rollup.config.js

Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
import replace from 'rollup-plugin-replace'
2+
import resolve from 'rollup-plugin-node-resolve'
3+
import commonjs from 'rollup-plugin-commonjs'
4+
5+
const lodashExports = [
6+
'compact',
7+
'difference',
8+
'each',
9+
'findIndex',
10+
'flow',
11+
'forEach',
12+
'get',
13+
'has',
14+
'filter',
15+
'first',
16+
'includes',
17+
'intersection',
18+
'invoke',
19+
'isArray',
20+
'isEmpty',
21+
'isFunction',
22+
'isNil',
23+
'isObject',
24+
'isPlainObject',
25+
'inRange',
26+
'isUndefined',
27+
'keys',
28+
'last',
29+
'map',
30+
'mapValues',
31+
'merge',
32+
'memoize',
33+
'min',
34+
'pick',
35+
'round',
36+
'set',
37+
'some',
38+
'sortBy',
39+
'startsWith',
40+
'sum',
41+
'take',
42+
'trim',
43+
'without',
44+
'union',
45+
'uniq',
46+
'uniqueId',
47+
]
48+
49+
export default {
50+
input: 'app.js',
51+
output: {
52+
file: 'bundle.js',
53+
format: 'iife',
54+
sourcemap: true,
55+
},
56+
plugins: [
57+
replace({
58+
'process.env.NODE_ENV': JSON.stringify('development'),
59+
}),
60+
resolve(),
61+
commonjs({
62+
include: 'node_modules/**',
63+
namedExports: {
64+
'node_modules/keyboard-key/src/keyboardKey.js': [
65+
'ArrowDown',
66+
'ArrowUp',
67+
'ArrowLeft',
68+
'ArrowRight',
69+
'End',
70+
'Enter',
71+
'Escape',
72+
'Home',
73+
'getCode',
74+
'Spacebar',
75+
'Tab',
76+
],
77+
'node_modules/lodash/fp.js': lodashExports,
78+
'node_modules/lodash/lodash.js': lodashExports,
79+
'node_modules/prop-types/index.js': [
80+
'any',
81+
'arrayOf',
82+
'bool',
83+
'element',
84+
'func',
85+
'node',
86+
'number',
87+
'object',
88+
'oneOf',
89+
'oneOfType',
90+
'shape',
91+
'string',
92+
'symbol',
93+
],
94+
'node_modules/react/index.js': [
95+
'Component',
96+
'cloneElement',
97+
'createRef',
98+
'PureComponent',
99+
'Fragment',
100+
'Children',
101+
'createElement',
102+
'isValidElement',
103+
],
104+
'node_modules/react-dom/index.js': ['createPortal', 'findDOMNode'],
105+
'node_modules/react-is/index.js': ['isForwardRef'],
106+
'node_modules/what-input/dist/what-input.js': ['ask'],
107+
},
108+
}),
109+
],
110+
}

build/gulp/tasks/test-bundlers.tsx

Lines changed: 33 additions & 164 deletions
Original file line numberDiff line numberDiff line change
@@ -4,175 +4,44 @@ import * as fs from 'fs'
44
import * as path from 'path'
55
import * as tmp from 'tmp'
66

7-
import sh from '../sh'
87
import { buildAndPackStardust, createPackageFilename, runIn } from './test-projects'
98

109
const logger = debug('bundle:rollup')
1110
logger.enabled = true
1211

13-
const STARTER_URL = `https://github.com/rollup/rollup-starter-app.git`
14-
15-
const appJS = `
16-
import React from "react";
17-
import ReactDOM from "react-dom";
18-
import { Button, Provider, themes } from "@stardust-ui/react";
19-
20-
ReactDOM.render(
21-
React.createElement(
22-
Provider,
23-
{ theme: themes.teams },
24-
React.createElement(Button, { content: "Theming" })
25-
),
26-
document.getElementById("time-now")
27-
);
28-
`
29-
30-
const rollupConfig = `
31-
import replace from "rollup-plugin-replace";
32-
import resolve from "rollup-plugin-node-resolve";
33-
import commonjs from "rollup-plugin-commonjs";
34-
35-
const lodashExports = [
36-
"compact",
37-
"difference",
38-
"each",
39-
"findIndex",
40-
"flow",
41-
"forEach",
42-
"get",
43-
"has",
44-
"filter",
45-
"first",
46-
"includes",
47-
"intersection",
48-
"invoke",
49-
"isArray",
50-
"isEmpty",
51-
"isFunction",
52-
"isNil",
53-
"isObject",
54-
"isPlainObject",
55-
"inRange",
56-
"isUndefined",
57-
"keys",
58-
"last",
59-
"map",
60-
"mapValues",
61-
"merge",
62-
"memoize",
63-
"min",
64-
"pick",
65-
"round",
66-
"set",
67-
"some",
68-
"sortBy",
69-
"startsWith",
70-
"sum",
71-
"take",
72-
"trim",
73-
"without",
74-
"union",
75-
"uniq",
76-
"uniqueId"
77-
];
78-
79-
export default {
80-
input: "src/main.js",
81-
output: {
82-
file: "public/bundle.js",
83-
format: "iife",
84-
sourcemap: true
85-
},
86-
plugins: [
87-
replace({
88-
"process.env.NODE_ENV": JSON.stringify("development")
89-
}),
90-
resolve(),
91-
commonjs({
92-
include: "node_modules/**",
93-
namedExports: {
94-
"node_modules/keyboard-key/src/keyboardKey.js": [
95-
"ArrowDown",
96-
"ArrowUp",
97-
"ArrowLeft",
98-
"ArrowRight",
99-
"End",
100-
"Enter",
101-
"Escape",
102-
"Home",
103-
"getCode",
104-
"Spacebar",
105-
"Tab"
106-
],
107-
"node_modules/lodash/fp.js": lodashExports,
108-
"node_modules/lodash/lodash.js": lodashExports,
109-
"node_modules/prop-types/index.js": [
110-
"any",
111-
"arrayOf",
112-
"bool",
113-
"element",
114-
"func",
115-
"node",
116-
"number",
117-
"object",
118-
"oneOf",
119-
"oneOfType",
120-
"shape",
121-
"string",
122-
"symbol"
123-
],
124-
"node_modules/react/index.js": [
125-
"Component",
126-
"cloneElement",
127-
"createRef",
128-
"PureComponent",
129-
"Fragment",
130-
"Children",
131-
"createElement",
132-
"isValidElement"
133-
],
134-
"node_modules/react-dom/index.js": ["createPortal", "findDOMNode"],
135-
"node_modules/react-is/index.js": ["isForwardRef"],
136-
"node_modules/what-input/dist/what-input.js": ["ask"]
137-
}
138-
})
139-
]
140-
};
141-
`
142-
143-
task('test:projects:rollup', async () => {
12+
task('test:bundlers:rollup', async () => {
14413
const packageFilename = createPackageFilename()
14514

146-
try {
147-
await buildAndPackStardust(packageFilename)
148-
logger(`✔️Stardust UI package was prepared: ${packageFilename}`)
149-
150-
const tmpDirectory = tmp.dirSync({ prefix: 'stardust-' }).name
151-
logger(`✔️Temporary directory was created: ${tmpDirectory}`)
152-
153-
await sh(`git clone ${STARTER_URL} ${tmpDirectory}`)
154-
logger(`✔️Starter repository was cloned`)
155-
156-
await runIn(tmpDirectory)('yarn')
157-
logger(`✔️Initial dependencies were installed`)
158-
159-
await runIn(tmpDirectory)('yarn upgrade --latest --pattern rollup')
160-
await runIn(tmpDirectory)('yarn add rollup-plugin-replace')
161-
logger(`✔️Initial dependencies were updated to latest`)
162-
163-
await runIn(tmpDirectory)('yarn add react react-dom')
164-
logger(`✔️React dependencies were installed`)
165-
166-
await runIn(tmpDirectory)(`yarn add ${packageFilename}`)
167-
logger(`✔️Stardust UI was added to dependencies`)
168-
169-
fs.writeFileSync(path.resolve(tmpDirectory, 'src', 'main.js'), appJS)
170-
fs.writeFileSync(path.resolve(tmpDirectory, 'rollup.config.js'), rollupConfig)
171-
logger(`✔️Source and bundler's config was updated`)
172-
173-
await runIn(tmpDirectory)(`yarn build`)
174-
logger(`✔️Example project was successfully built: ${tmpDirectory}`)
175-
} finally {
176-
fs.unlinkSync(packageFilename)
177-
}
15+
await buildAndPackStardust(packageFilename)
16+
logger(`✔️Stardust UI package was prepared: ${packageFilename}`)
17+
18+
const tmpDirectory = tmp.dirSync({ prefix: 'stardust-' }).name
19+
logger(`✔️Temporary directory was created: ${tmpDirectory}`)
20+
21+
const dependencies = [
22+
'rollup',
23+
'rollup-plugin-replace',
24+
'rollup-plugin-commonjs',
25+
'rollup-plugin-node-resolve',
26+
'react',
27+
'react-dom',
28+
].join(' ')
29+
await runIn(tmpDirectory)(`yarn add ${dependencies}`)
30+
logger(`✔️Dependencies were installed`)
31+
32+
await runIn(tmpDirectory)(`yarn add ${packageFilename}`)
33+
logger(`✔️Stardust UI was added to dependencies`)
34+
35+
fs.copyFileSync(
36+
path.resolve(__dirname, '..', 'scaffold', 'app.js'),
37+
path.resolve(tmpDirectory, 'app.js'),
38+
)
39+
fs.copyFileSync(
40+
path.resolve(__dirname, '..', 'scaffold', 'rollup.config.js'),
41+
path.resolve(tmpDirectory, 'rollup.config.js'),
42+
)
43+
logger(`✔️Source and bundler's config were created`)
44+
45+
await runIn(tmpDirectory)(`yarn rollup -c`)
46+
logger(`✔️Example project was successfully built: ${tmpDirectory}`)
17847
})

0 commit comments

Comments
 (0)