Skip to content

E2E Rollup

E2E Rollup #13973

on:
schedule:
- cron: '0 */4 * * *'
push:
branches:
- master
pull_request:
paths:
- .github/actions/prepare/action.yml
- .github/workflows/e2e-rollup-workflow.yml
- scripts/e2e-setup-ci.sh
name: 'E2E Rollup'
jobs:
chore:
name: 'Validating Rollup'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/prepare
- name: 'Running the integration test'
run: |
source scripts/e2e-setup-ci.sh
yarn init -p
yarn add -D rollup@^1.29.0
# Tree-shaking
echo "export default { input: 'src/main.js', output: { file: 'dist/bundle.js', format: 'cjs' } };" | tee rollup.config.js
mkdir src
echo "export function square(x) { return x * x } export function cube(x) { return x * x * x }" | tee src/maths.js
echo "import { cube } from './maths.js'; console.log(cube(5));" | tee src/main.js
yarn rollup -c
[[ "$(node dist/bundle.js)" = "125" ]]
! cat dist/bundle.js | grep "square"
rm -rf dist src
# Multiple entry modules
echo "export default { input: ['src/main.js', 'src/otherEntry.js'], output: { dir: 'dist', format: 'cjs' } };" | tee rollup.config.js
mkdir src
echo "import hyperCube from './hyperCube.js'; console.log(hyperCube(5));" | tee src/main.js
echo "import cube from './cube.js'; console.log(cube(5));" | tee src/otherEntry.js
echo "import square from './square.js'; export default function cube(x) { return square(x) * x; }" | tee src/cube.js
echo "import cube from './cube.js'; export default function hyperCube(x) { return cube(x) * x; }" | tee src/hyperCube.js
echo "export default function square(x) { return x * x; }" | tee src/square.js
yarn rollup -c
[[ "$(node dist/main.js)" = "625" ]]
[[ "$(node dist/otherEntry.js)" = "125" ]]
ls dist | grep "cube"
rm -rf dist src
# With NPM packages
yarn add the-answer@^1.0.0
yarn add -D @rollup/plugin-node-resolve@^7.0.0
echo "import resolve from '@rollup/plugin-node-resolve'; export default { input: 'src/main.js', output: { file: 'dist/bundle.js', format: 'cjs' }, plugins: [resolve()]};" | tee rollup.config.js
mkdir src
echo "import answer from 'the-answer'; console.log('the answer is ' + answer);" | tee src/main.js
yarn rollup -c
[[ "$(node dist/bundle.js)" = "the answer is 42" ]]
rm -rf dist src
# Peer dependencies
yarn add -P lodash
echo "import resolve from '@rollup/plugin-node-resolve'; export default { input: 'src/main.js', output: { file: 'dist/bundle.js', format: 'cjs' }, plugins: [resolve()], external: ['lodash']};" | tee rollup.config.js
mkdir src
echo "import answer from 'the-answer'; import _ from 'lodash';" | tee src/main.js
yarn rollup -c
! cat dist/bundle.js | grep "lodash"
rm -rf src dist
# Babel
yarn add -D rollup-plugin-babel@^4.3.3 @babel/core@^7.7.7 @babel/preset-env@^7.7.7
echo "import resolve from '@rollup/plugin-node-resolve'; import babel from 'rollup-plugin-babel'; export default { input: 'src/main.js', output: { file: 'dist/bundle.js', format: 'cjs' }, plugins: [resolve(), babel({ exclude: 'node_modules/**' })]};" | tee rollup.config.js
mkdir src
echo '{ "presets": [["@babel/preset-env", { "modules": false }]] }' | tee src/.babelrc
echo "import answer from 'the-answer'; console.log(\`the answer is \${answer}\`);" | tee src/main.js
yarn rollup -c
[[ "$(node dist/bundle.js)" = "the answer is 42" ]]
! cat dist/bundle.js | grep "console.log(\`"
rm -rf src dist
# rollup-plugin-postcss
yarn add -D rollup-plugin-postcss@^2.0.3
echo "import postcss from 'rollup-plugin-postcss'; export default { input: 'src/main.js', output: { file: 'dist/bundle.js', format: 'cjs' }, plugins: [postcss({ extract: true, modules: true })] }" | tee rollup.config.js
mkdir src
echo "import style from './style.css'; console.log(style);" | tee src/main.js
echo ".app { color: red; }" | tee src/style.css
yarn rollup -c
[[ "$(cat dist/bundle.css)" = ".style_app__3FC6W { color: red; }" ]]
[[ "$(node dist/bundle.js)" = "{ app: 'style_app__3FC6W' }" ]]
rm -rf src dist
pFad - Phonifier reborn

Pfad - The Proxy pFad of Β© 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy