Skip to content

Commit 0ab8ddc

Browse files
committed
groundwork for asset caching
1 parent b429841 commit 0ab8ddc

11 files changed

Lines changed: 78 additions & 24 deletions

File tree

.dockerignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,4 @@ test
66
scripts
77
docs
88
firefox
9+
public

.gitignore

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,6 @@
11
.DS_Store
2+
dist
23
node_modules
3-
public/upload.js
4-
public/download.js
5-
public/version.json
6-
public/l20n.min.js
7-
public/polyfill.min.js
84
static/*
95
!static/info.txt
106
test/frontend/bundle.js
11-
public/main.css

docker-compose.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,6 @@ services:
88
- "1443:1443"
99
environment:
1010
- REDIS_HOST=redis
11+
- NODE_ENV=production
1112
redis:
1213
image: redis:alpine

frontend/src/upload.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ async function upload(event) {
3232

3333
storage.totalUploads += 1;
3434

35-
let file = '';
35+
let file = null;
3636
if (clickOrDrop === 'drop') {
3737
if (!event.originalEvent.dataTransfer.files[0]) {
3838
uploadWindow.classList.remove('ondrag');

package-lock.json

Lines changed: 43 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,8 @@
5151
"testpilot-ga": "^0.3.0",
5252
"webcrypto-liner": "^0.1.25",
5353
"webpack": "^3.5.4",
54-
"webpack-dev-middleware": "^1.12.0"
54+
"webpack-dev-middleware": "^1.12.0",
55+
"webpack-manifest-plugin": "^1.3.1"
5556
},
5657
"engines": {
5758
"node": ">=8.2.0"
@@ -99,13 +100,15 @@
99100
],
100101
"scripts": {
101102
"precommit": "lint-staged",
103+
"clean": "rm -rf dist/",
102104
"build": "npm-run-all build:*",
103-
"build:css": "postcss frontend/src/*.css -d public",
105+
"build:css": "postcss frontend/src/*.css -d dist",
104106
"build:js": "webpack -p",
105-
"build:vendor": "cp node_modules/l20n/dist/web/l20n.min.js node_modules/babel-polyfill/dist/polyfill.min.js public",
107+
"build:vendor": "cp node_modules/l20n/dist/web/l20n.min.js node_modules/babel-polyfill/dist/polyfill.min.js dist",
106108
"build:version": "node scripts/version",
109+
"build:public": "cp -R public/ dist",
107110
"contributors": "git shortlog -s | awk -F\\t '{print $2}' > CONTRIBUTORS",
108-
"dev": "npm run build && npm start",
111+
"dev": "npm run clean && npm run build && npm start",
109112
"format": "prettier '{,frontend/src/,scripts/,server/,test/**/!(bundle)}*.{js,css}' --single-quote --write",
110113
"get-prod-locales": "node scripts/get-prod-locales",
111114
"get-prod-locales:write": "npm run get-prod-locales -- --write",

scripts/version.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ try {
1010
// Whatever...
1111
}
1212

13-
const filename = path.join(__dirname, '..', 'public', 'version.json');
13+
const filename = path.join(__dirname, '..', 'dist', 'version.json');
1414
const filedata = {
1515
commit,
1616
source: pkg.homepage,

server/server.js

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ const storage = require('./storage.js');
99
const Raven = require('raven');
1010
const crypto = require('crypto');
1111
const fs = require('fs');
12-
const version = require('../public/version.json');
12+
const version = require('../dist/version.json');
13+
const assets = require('../dist/manifest.json');
1314

1415
if (conf.sentry_dsn) {
1516
Raven.config(conf.sentry_dsn).install();
@@ -19,7 +20,7 @@ const mozlog = require('./log.js');
1920

2021
const log = mozlog('send.server');
2122

22-
const STATIC_PATH = path.join(__dirname, '../public');
23+
const STATIC_PATH = path.join(__dirname, '../dist');
2324

2425
const app = express();
2526

@@ -36,6 +37,8 @@ function prodLangs() {
3637
return require('../package.json').availableLanguages.join(',');
3738
}
3839

40+
let asset = name => assets[name];
41+
3942
const availableLanguages = conf.l10n_dev ? allLangs() : prodLangs();
4043

4144
if (conf.env === 'development') {
@@ -44,11 +47,16 @@ if (conf.env === 'development') {
4447
const config = require('../webpack.config.js');
4548
config.devtool = 'inline-source-map';
4649
const compiler = webpack(config);
47-
app.use(
48-
webpackDevMiddleware(compiler, {
49-
publicPath: config.output.publicPath
50-
})
51-
);
50+
const wdm = webpackDevMiddleware(compiler, {
51+
publicPath: config.output.publicPath
52+
});
53+
app.use(wdm);
54+
asset = name => {
55+
const f = wdm.fileSystem.readFileSync(
56+
wdm.getFilenameFromUrl('/manifest.json')
57+
);
58+
return JSON.parse(f)[name];
59+
};
5260
}
5361

5462
app.engine(
@@ -57,6 +65,7 @@ app.engine(
5765
defaultLayout: 'main',
5866
partialsDir: 'views/partials/',
5967
helpers: {
68+
asset,
6069
availableLanguages,
6170
l10nDev: conf.l10n_dev,
6271
baseUrl: conf.base_url,

views/download.handlebars

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<div id="download">
2-
<script defer src="/download.js"></script>
2+
<script defer src="/{{asset 'download.js'}}"></script>
33
<div id="download-page-one">
44
<div class="title">
55
<span id="dl-file"

views/index.handlebars

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<div id="page-one" hidden>
2-
<script defer src="/upload.js"></script>
2+
<script defer src="/{{asset 'upload.js' }}"></script>
33
<div class="title" data-l10n-id="uploadPageHeader"></div>
44
<div class="description">
55
<div data-l10n-id="uploadPageExplainer"></div>

0 commit comments

Comments
 (0)