Skip to content

Commit

Permalink
feat: bundle modules using Rollup
Browse files Browse the repository at this point in the history
  • Loading branch information
colinrotherham committed Feb 7, 2025
1 parent 91ccbf7 commit 9bf6147
Show file tree
Hide file tree
Showing 6 changed files with 932 additions and 691 deletions.
2 changes: 1 addition & 1 deletion docs/assets/javascript/application.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import * as GOVUKFrontend from 'govuk-frontend'

import * as MOJFrontend from '../../../src/moj/all.js'
import MOJFrontend from '../../../src/moj/all.js'

import CollapsibleNav from './collapsible-nav.mjs'
import Cookies from './cookies.mjs'
Expand Down
65 changes: 44 additions & 21 deletions gulp/build-javascript.js
Original file line number Diff line number Diff line change
@@ -1,30 +1,49 @@
const { join } = require('path')

const commonjs = require('@rollup/plugin-commonjs')
const resolve = require('@rollup/plugin-node-resolve')
const { glob } = require('glob')
const gulp = require('gulp')
const concat = require('gulp-concat')
const rename = require('gulp-rename')
const uglify = require('gulp-uglify')
const umd = require('gulp-umd')
const { rollup } = require('rollup')

gulp.task('build:javascript', () => {
return gulp
.src([
'src/moj/namespace.js',
'src/moj/helpers.js',
'src/moj/all.js',
'src/moj/version.js',
'src/moj/components/**/!(*.spec).js'
])
.pipe(concat('all.js'))
.pipe(
umd({
exports: function () {
return 'MOJFrontend'
},
namespace: function () {
return 'MOJFrontend'
gulp.task('build:javascript', async () => {
const modulePaths = await glob('moj/**/*.{cjs,js,mjs}', {
cwd: 'src',
ignore: [
'**/*.spec.{cjs,js,mjs}',
'**/filters/**',
'**/vendor/**',
'**/init.js'
],
nodir: true
})

// Create Rollup bundle(s)
for (const modulePath of modulePaths) {
const options = /** @satisfies {RollupOptions} */ ({
input: join('src', modulePath),
output: [
{
extend: true,
file: join('package', modulePath),
format: 'umd',
name: 'MOJFrontend'
}
})
)
.pipe(gulp.dest('package/moj/'))
],
plugins: [resolve(), commonjs()]
})

// Create bundle
const bundle = await rollup(options)

// Write to output format(s)
for (const output of options.output) {
await bundle.write(output)
}
}
})

gulp.task('build:javascript-minified', () => {
Expand All @@ -46,3 +65,7 @@ gulp.task('build:javascript-minified-with-jquery', () => {
.pipe(uglify())
.pipe(gulp.dest('package/moj/'))
})

/**
* @import { RollupOptions } from 'rollup'
*/
34 changes: 20 additions & 14 deletions gulp/docs.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
const commonjs = require('@rollup/plugin-commonjs')
const resolve = require('@rollup/plugin-node-resolve')
const gulp = require('gulp')
const gulpEsbuild = require('gulp-esbuild')
const gulpSass = require('gulp-sass')
const { rollup } = require('rollup')
const dartSass = require('sass-embedded')

const sass = gulpSass(dartSass)
Expand Down Expand Up @@ -59,19 +61,19 @@ gulp.task('docs:styles', (done) => {
})

// Bundle the docs site javascript
gulp.task('docs:scripts', (done) => {
return gulp
.src('docs/assets/javascript/application.mjs')
.pipe(
gulpEsbuild({
bundle: true,
loader: { '.mjs': 'js' },
minify: process.env.ENV !== 'dev',
outfile: 'application.js',
target: 'es6'
}).on('error', done)
)
.pipe(gulp.dest('public/assets/javascript'))
gulp.task('docs:scripts', async () => {
const options = /** @satisfies {RollupOptions} */ ({
input: 'docs/assets/javascript/application.mjs',
output: {
dir: 'public/assets/javascript',
format: 'es',
name: 'MOJFrontend'
},
plugins: [resolve(), commonjs()]
})

const bundle = await rollup(options)
await bundle.write(options.output)
})

gulp.task('docs:revision', async () => {
Expand All @@ -94,3 +96,7 @@ gulp.task('docs:revision', async () => {
.pipe(rev.manifest())
.pipe(gulp.dest('public/assets/'))
})

/**
* @import { RollupOptions } from 'rollup'
*/
Loading

0 comments on commit 9bf6147

Please sign in to comment.