Skip to content

Commit d84f2e7

Browse files
committed
fix: fixed babel/browserify build and added factor-bundle
1 parent 5f01e8e commit d84f2e7

File tree

11 files changed

+630
-150
lines changed

11 files changed

+630
-150
lines changed

template/.babelrc

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
{
22
"presets": [
3-
["@babel/env", {
4-
"targets": {
5-
"browsers": [ "> 1%", "last 2 versions" ]
3+
[
4+
"@babel/env", {
5+
"debug": true,
6+
"targets": {
7+
"browsers": "extends @ladjs/browserslist-config"
8+
}
69
}
7-
}]
10+
]
811
]
912
}

template/.browserslistrc

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1 @@
1-
# Browsers that we support
2-
3-
> 1%
4-
last 2 versions
1+
extends @ladjs/browserslist-config

template/.build.eslintrc

Lines changed: 39 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -11,38 +11,55 @@
1111
"plugins": ["compat", "@lwc/eslint-plugin-lwc"],
1212
"rules": {
1313
"compat/compat": "error",
14-
"no-cond-assign": "off",
15-
"no-constant-condition": "off",
16-
"no-control-regex": "off",
17-
"no-empty": "off",
18-
"no-extra-semi": "off",
19-
"no-fallthrough": "off",
14+
"@lwc/lwc/no-async-await": "error",
15+
"promise/prefer-await-to-then": "off",
2016
"no-func-assign": "off",
21-
"no-mixed-spaces-and-tabs": "off",
22-
"no-prototype-builtins": "off",
2317
"no-redeclare": "off",
18+
"no-unused-vars": "off",
2419
"no-self-assign": "off",
25-
"no-shadow-restricted-names": "off",
20+
"no-obj-calls": "off",
2621
"no-sparse-arrays": "off",
27-
"no-undef": "off",
28-
"no-unexpected-multiline": "off",
29-
"no-unused-vars": "off",
30-
"no-useless-catch": "off",
22+
"no-control-regex": "off",
3123
"no-useless-escape": "off",
32-
"require-atomic-updates": "off",
33-
"@lwc/lwc/no-async-await": "error",
34-
"promise/prefer-await-to-then": "off"
24+
"no-useless-catch": "off",
25+
"no-prototype-builtins": "off",
26+
"no-empty": "off",
27+
"no-fallthrough": "off",
28+
"no-cond-assign": "off",
29+
"getter-return": "off",
30+
"require-atomic-updates": "off"
31+
},
32+
"globals": {
33+
"ActiveXObject": "readonly",
34+
"__e": "writable",
35+
"__g": "writable",
36+
"requirejs": "readonly"
3537
},
3638
"settings": {
3739
"polyfills": [
38-
"ArrayBuffer.isView",
39-
"MutationObserver",
40+
"Array.from",
41+
"Number.isFinite",
42+
"Object.assign",
43+
"Object.getOwnPropertyDescriptors",
44+
"Object.getOwnPropertySymbols",
45+
"Promise",
46+
"Promise.all",
47+
"Promise.race",
48+
"Promise.reject",
49+
"Promise.resolve",
4050
"Reflect",
41-
"console.trace",
42-
"navigator.maxTouchPoints",
43-
"window.crypto",
51+
"Symbol",
52+
"Symbol.for",
53+
"Symbol.iterator",
54+
"Symbol.prototype",
55+
"Symbol.species",
56+
"Symbol.toPrimitive",
57+
"Symbol.toStringTag",
4458
"Uint32Array",
45-
"Number.isFinite"
59+
"Uint8Array",
60+
"navigator.maxTouchPoints",
61+
"window.scrollX",
62+
"window.scrollY"
4663
]
4764
}
4865
}

template/app/views/layout.pug

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,9 @@ html(lang=locale)
103103
//- polyfill environment
104104
script(defer, src=`https://polyfill.io/v3/polyfill${config.env === 'production' ? '.min' : ''}.js?features=${polyfills.join(',')}`)
105105

106+
//- factor bundle (common shared assets across all files)
107+
script(defer, src=manifest('js/factor-bundle.js'))
108+
106109
//- uncaught (handles errors, similar to TraceKit but with CabinJS + StackTrace.JS)
107110
script(defer, src=manifest('js/uncaught.js'))
108111

template/assets/js/core.js

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -70,9 +70,12 @@ handleHashOnLoad();
7070
$(() => {
7171
// Resize navbar padding on load, window resize, and navbar collapse/show
7272
resizeNavbarPadding($);
73-
$(window).on('resize.resizeNavbarPadding', resizeNavbarPadding);
74-
$('.navbar-collapse').on('hidden.bs.collapse', resizeNavbarPadding);
75-
$('.navbar-collapse').on('shown.bs.collapse', resizeNavbarPadding);
73+
$(window).on('resize.resizeNavbarPadding', () => {
74+
resizeNavbarPadding($);
75+
});
76+
$('.navbar-collapse').on('hidden.bs.collapse shown.bs.collapse', () => {
77+
resizeNavbarPadding($);
78+
});
7679

7780
// Handle modals on anchor tags with data-target specified (preserve href)
7881
$('a[data-toggle="modal-anchor"]').on('click.modalAnchor', modalAnchor);

template/ecosystem.json

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,10 +48,7 @@
4848
"ref": "origin/master",
4949
"repo": "[email protected]:<%= repo.replace('https://github.com/', '') %>.git",
5050
"path": "/var/www/production",
51-
"post-deploy": "yarn -D && yarn start post-deploy",
52-
"env": {
53-
"NODE_ENV": "production"
54-
}
51+
"post-deploy": "yarn && NODE_ENV=production yarn start build && yarn start publish-assets && pm2 startOrGracefulReload ecosystem.json --env production --update-env"
5552
}
5653
}
5754
}

template/emails/layout.pug

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ html(lang=locale)
77
meta(http-equiv="X-UA-Compatible", content="IE=edge")
88
meta(name="x-apple-disable-message-reformatting")
99
title= subject
10-
link(rel="stylesheet", href="/css/app.css", data-inline)
10+
link(rel="stylesheet", href=manifest('css/app.css'), data-inline)
1111
body.email
1212
block body
1313
block nav

template/gulpfile.js

Lines changed: 36 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,26 @@
11
const path = require('path');
2+
const fs = require('fs');
23

34
const AWS = require('aws-sdk');
45
const _ = require('lodash');
56
const awscloudfront = require('gulp-awspublish-cloudfront');
67
const awspublish = require('gulp-awspublish');
7-
const babelify = require('@ladjs/babelify');
8+
const babel = require('gulp-babel');
89
const browserify = require('browserify');
9-
const buffer = require('vinyl-buffer');
1010
const collapser = require('bundle-collapser/plugin');
11-
const commonShake = require('common-shakeify');
1211
const cssnano = require('cssnano');
1312
const del = require('del');
14-
const envify = require('envify/custom');
13+
const envify = require('gulp-envify');
1514
const fontMagician = require('postcss-font-magician');
1615
const fontSmoothing = require('postcss-font-smoothing');
16+
const globby = require('globby');
1717
const gulpEslint = require('gulp-eslint');
1818
const gulpRemark = require('gulp-remark');
1919
const gulpXo = require('gulp-xo');
2020
const gulpif = require('gulp-if');
2121
const imagemin = require('gulp-imagemin');
2222
const lr = require('gulp-livereload');
23+
const makeDir = require('make-dir');
2324
const ms = require('ms');
2425
const nodeSass = require('node-sass');
2526
const pngquant = require('imagemin-pngquant');
@@ -32,9 +33,8 @@ const sass = require('gulp-sass');
3233
const scssParser = require('postcss-scss');
3334
const sourcemaps = require('gulp-sourcemaps');
3435
const stylelint = require('stylelint');
35-
const tap = require('gulp-tap');
36-
const uglify = require('gulp-uglify');
37-
const unassertify = require('unassertify');
36+
const terser = require('gulp-terser');
37+
const unassert = require('gulp-unassert');
3838
const unprefix = require('postcss-unprefix');
3939
const { lastRun, watch, series, parallel, src, dest } = require('gulp');
4040

@@ -178,30 +178,35 @@ function eslint() {
178178
.pipe(gulpEslint.failAfterError());
179179
}
180180

181-
// <https://github.com/gulpjs/gulp/blob/master/docs/recipes/browserify-multiple-destination.md>
182-
function js() {
183-
return src('assets/js/**/*.js', {
184-
base: 'assets',
185-
since: lastRun(js)
186-
})
187-
.pipe(
188-
tap(file => {
189-
file.contents = browserify({
190-
entries: file.path,
191-
debug: true,
192-
basedir: 'assets'
193-
})
194-
.transform(babelify)
195-
.transform(unassertify, { global: true })
196-
.transform(envify(env), { global: true })
197-
.plugin(collapser)
198-
.plugin(commonShake)
199-
.bundle();
181+
async function bundle() {
182+
// make build/js folder for compile task
183+
await makeDir(path.join(config.buildBase, 'js'));
184+
const paths = await globby('**/*.js', { cwd: 'assets/js' });
185+
const b = browserify({
186+
entries: paths.map(str => `assets/js/${str}`),
187+
debug: true
188+
});
189+
return (
190+
b
191+
.plugin(collapser)
192+
.plugin('factor-bundle', {
193+
outputs: paths.map(str => `${config.buildBase}/js/${str}`)
200194
})
201-
)
202-
.pipe(buffer())
195+
.bundle()
196+
// .bundle((err, buffer) => {
197+
.pipe(fs.createWriteStream(`${config.buildBase}/js/factor-bundle.js`))
198+
);
199+
}
200+
201+
async function compile() {
202+
return src('build/js/**/*.js', {
203+
since: lastRun(compile)
204+
})
203205
.pipe(sourcemaps.init({ loadMaps: true }))
204-
.pipe(gulpif(PROD, uglify()))
206+
.pipe(envify(env))
207+
.pipe(unassert())
208+
.pipe(babel())
209+
.pipe(gulpif(PROD, terser()))
205210
.pipe(gulpif(PROD, rev()))
206211
.pipe(sourcemaps.write('./'))
207212
.pipe(dest(config.buildBase))
@@ -233,6 +238,8 @@ function clean() {
233238
return del([config.buildBase]);
234239
}
235240

241+
const js = series(bundle, compile);
242+
236243
const build = series(
237244
clean,
238245
parallel(

template/package-scripts.js

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,17 @@ module.exports = {
55
all: series.nps('build', 'apps-and-watch'),
66
appsAndWatch: concurrent.nps('apps', 'watch'),
77
apps: concurrent.nps('bull', 'api', 'web'),
8+
89
bull: 'nodemon bull.js',
910
api: 'nodemon api.js',
1011
web: 'nodemon web.js',
12+
1113
watch: 'gulp watch',
1214
clean: 'gulp clean',
1315
build: 'gulp build',
14-
lint: series('gulp xo', 'gulp remark', 'gulp pug'),
16+
publishAssets: 'gulp publish',
17+
18+
lint: series('gulp xo', 'gulp eslint', 'gulp remark', 'gulp pug'),
1519

1620
// <https://github.com/kentcdodds/nps-utils/issues/24>
1721
pretest: concurrent.nps('lint', 'build', 'pretest-mongo', 'pretest-redis'),
@@ -24,16 +28,6 @@ module.exports = {
2428
testCoverage: series('nps pretest', 'nyc ava'),
2529
testUpdateSnapshots: series('nps pretest', 'ava --update-snapshots'),
2630

27-
coverage: 'nyc report --reporter=text-lcov > coverage.lcov && codecov',
28-
29-
publishAssets: 'gulp publish',
30-
31-
postDeploy: series.nps(
32-
...[
33-
'build',
34-
...[process.env.NODE_ENV === 'production' ? 'publish-assets' : null],
35-
`pm2 startOrGracefulReload ecosystem.json --env ${process.env.NODE_ENV} --update-env`
36-
]
37-
)
31+
coverage: 'nyc report --reporter=text-lcov > coverage.lcov && codecov'
3832
}
3933
};

template/package.json

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -111,25 +111,27 @@
111111
"@babel/preset-env": "^7.6.0",
112112
"@commitlint/cli": "^8.2.0",
113113
"@commitlint/config-conventional": "^8.2.0",
114-
"@ladjs/babelify": "^8.0.1",
114+
"@ladjs/browserslist-config": "^0.0.1",
115115
"@lwc/eslint-plugin-lwc": "^0.8.0",
116116
"ava": "^2.4.0",
117117
"babel-eslint": "^10.0.3",
118118
"browserify": "^16.5.0",
119119
"bundle-collapser": "^1.3.0",
120120
"codecov": "^3.5.0",
121-
"common-shakeify": "^0.6.2",
122121
"cssnano": "^4.1.10",
123-
"envify": "https://github.com/goto-bus-stop/envify#new-syntax",
124122
"eslint": "^6.4.0",
125123
"eslint-config-xo-lass": "^1.0.3",
126124
"eslint-formatter-pretty": "^2.1.1",
127125
"eslint-plugin-compat": "^3.3.0",
126+
"factor-bundle": "^2.5.0",
128127
"fixpack": "^2.3.1",
128+
"globby": "^10.0.1",
129129
"gulp": "4.x",
130130
"gulp-awspublish": "^4.0.0",
131131
"gulp-awspublish-cloudfront": "^1.0.0",
132+
"gulp-babel": "^8.0.0",
132133
"gulp-cli": "^2.2.0",
134+
"gulp-envify": "^1.0.0",
133135
"gulp-eslint": "^6.0.0",
134136
"gulp-if": "^3.0.0",
135137
"gulp-imagemin": "^6.1.0",
@@ -140,12 +142,13 @@
140142
"gulp-rev": "^9.0.0",
141143
"gulp-sass": "^4.0.2",
142144
"gulp-sourcemaps": "^2.6.5",
143-
"gulp-tap": "^2.0.0",
144-
"gulp-uglify": "^3.0.2",
145+
"gulp-terser": "^1.2.0",
146+
"gulp-unassert": "^1.1.0",
145147
"gulp-xo": "^0.22.0",
146148
"husky": "^3.0.5",
147149
"imagemin-pngquant": "^8.0.0",
148150
"lint-staged": "^9.2.5",
151+
"make-dir": "^3.0.0",
149152
"ms": "^2.1.2",
150153
"node-sass": "^4.12.0",
151154
"nodemon": "^1.19.2",
@@ -167,8 +170,7 @@
167170
"stylelint": "10.1.0",
168171
"stylelint-config-recommended-scss": "^3.3.0",
169172
"stylelint-scss": "^3.11.0",
170-
"unassertify": "^2.1.1",
171-
"vinyl-buffer": "^1.0.1",
173+
"tinyify": "https://github.com/niftylettuce/tinyify",
172174
"xo": "^0.24.0"
173175
},
174176
"engines": {

0 commit comments

Comments
 (0)