Skip to content

Commit ae70c01

Browse files
authored
Merge pull request #47 from skuadron45/master
Promote asset/resource rather than url-loader
2 parents 4bffefa + 2016aed commit ae70c01

File tree

4 files changed

+47
-39
lines changed

4 files changed

+47
-39
lines changed

build/utils.js

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,12 @@
1-
exports.pages = function (env, folder = '') {
1+
function isDevMode(mode) {
2+
return mode === "development"
3+
}
4+
exports.isDevMode = isDevMode;
5+
exports.getMode = function (env) {
6+
env = env || {};
7+
return env.mode || 'production'
8+
}
9+
exports.pages = function (mode, folder = '') {
210
const rootPagesFolderName = 'pages'
311
const HtmlWebpackPlugin = require('html-webpack-plugin')
412
const fs = require('fs')
@@ -14,13 +22,13 @@ exports.pages = function (env, folder = '') {
1422
const viewName = view.split('.')[0]
1523
const fileName = folder === '' ? `${viewName}/index.html` : `${folder}/${viewName}/index.html`
1624
const options = {
17-
minify: !env === 'development',
25+
minify: !isDevMode(mode),
1826
filename: fileName,
1927
template: `views/${rootPagesFolderName}/${folder}/${view}`,
2028
inject: true
2129
}
2230

23-
if (env === 'development') {
31+
if (isDevMode(mode)) {
2432
options.minify = {
2533
removeComments: true,
2634
collapseWhitespace: true,

build/webpack.config.js

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,18 @@ const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin')
1212

1313
const ASSET_PATH = process.env.ASSET_PATH || '/'
1414

15-
1615
// Files
1716
const utils = require('./utils')
1817

1918
// Configuration
20-
module.exports = env => {
19+
module.exports = (env) => {
20+
21+
// Get default mode from env
22+
const MODE = env.mode || 'production';
2123

2224
return {
25+
mode: MODE,
2326
target: 'web',
24-
2527
context: path.join(__dirname, '../src'),
2628
entry: {
2729
app: path.join(__dirname, '../src/app.js'),
@@ -63,7 +65,7 @@ module.exports = env => {
6365
{
6466
test: /\.css$/,
6567
use: [
66-
env === 'development' ? 'style-loader' : MiniCssExtractPlugin.loader,
68+
utils.isDevMode(MODE) ? 'style-loader' : MiniCssExtractPlugin.loader,
6769
{
6870
loader: 'css-loader',
6971
options: {
@@ -76,7 +78,7 @@ module.exports = env => {
7678
{
7779
test: /\.scss$/,
7880
use: [
79-
env === 'development' ? 'style-loader' : MiniCssExtractPlugin.loader, // creates style nodes from JS strings
81+
utils.isDevMode(MODE) ? 'style-loader' : MiniCssExtractPlugin.loader, // creates style nodes from JS strings
8082
{ loader: 'css-loader', options: { importLoaders: 1, sourceMap: true } }, // translates CSS into CommonJS
8183
'postcss-loader',
8284
'sass-loader', // compiles Sass to CSS
@@ -92,28 +94,25 @@ module.exports = env => {
9294
},
9395
{
9496
test: /\.(png|jpe?g|gif|svg|ico)(\?.*)?$/,
95-
loader: 'url-loader',
96-
options: {
97-
limit: 3000,
98-
name: 'assets/images/[name].[contenthash:7].[ext]'
97+
type: 'asset/resource',
98+
generator: {
99+
filename: 'assets/images/[name].[contenthash:7][ext]'
99100
}
100101
},
101102
{
102103
test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
103-
loader: 'url-loader',
104-
options: {
105-
limit: 5000,
106-
name: 'assets/fonts/[name].[contenthash:7].[ext]'
104+
type: 'asset/resource',
105+
generator: {
106+
filename: 'assets/fonts/[name].[contenthash:7][ext]'
107107
}
108108
},
109-
/* {
109+
/*{
110110
test: /\.(mp4)(\?.*)?$/,
111-
loader: 'url-loader',
112-
options: {
113-
limit: 10000,
114-
name: 'assets/videos/[name].[contenthash:7].[ext]'
115-
}
116-
} */
111+
type: 'asset/resource',
112+
generator: {
113+
filename: 'assets/videos/[name].[contenthash:7][ext]'
114+
},
115+
}*/
117116
]
118117
},
119118
experiments: {
@@ -162,16 +161,17 @@ module.exports = env => {
162161
Pages
163162
*/
164163

165-
// Desktop page
164+
// Homepage
166165
new HtmlWebpackPlugin({
167-
minify: !env === 'development',
166+
minify: !utils.isDevMode(MODE),
168167
filename: 'index.html',
169168
template: 'views/index.pug',
170169
inject: 'body',
171170
}),
172171

173-
...utils.pages(env), // env, public path, parent folder
174-
...utils.pages(env, 'blog'),
172+
// Other pages
173+
...utils.pages(MODE), // mode
174+
...utils.pages(MODE, 'blog'), // mode, folder name under pages
175175

176176
new webpack.ProvidePlugin({
177177
$: 'jquery',

package.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,10 @@
1212
"license": "MIT",
1313
"scripts": {
1414
"test": "echo \"Error: no test specified\" && exit 1",
15-
"build": "rimraf dist && webpack --config ./build/webpack.config.js --mode development --progress",
16-
"dev-network": "webpack server --config ./build/webpack.config.js --mode=development --progress --open --host 0.0.0.0",
17-
"dev": "webpack serve --config ./build/webpack.config.js --mode development --progress",
18-
"prod": "rimraf dist && webpack --config ./build/webpack.config.js --mode production --progress "
15+
"build": "rimraf dist && webpack --env mode=development --config ./build/webpack.config.js --progress",
16+
"dev-network": "webpack serve --env mode=development --config ./build/webpack.config.js --progress --open --host 0.0.0.0 --disable-host-check",
17+
"dev": "webpack serve --env mode=development --config ./build/webpack.config.js --progress",
18+
"prod": "rimraf dist && webpack --env mode=production --config ./build/webpack.config.js --progress "
1919
},
2020
"resolutions": {
2121
"upath": "1.1.1"

src/views/layouts/master.pug

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -35,16 +35,16 @@ html(lang='en')
3535

3636

3737
//- Favicons
38-
link(rel='apple-touch-icon', sizes='180x180', href=require('images/favicons/apple-touch-icon.png').default)
39-
link(rel='icon', type='image/png', sizes='32x32', href=require('images/favicons/favicon-32x32.png').default)
40-
link(rel='icon', type='image/png', sizes='16x16', href=require('images/favicons/favicon-16x16.png').default)
41-
link(rel='shortcut icon', href=require('images/favicons/favicon.ico').default)
38+
link(rel='apple-touch-icon', sizes='180x180', href=require('images/favicons/apple-touch-icon.png'))
39+
link(rel='icon', type='image/png', sizes='32x32', href=require('images/favicons/favicon-32x32.png'))
40+
link(rel='icon', type='image/png', sizes='16x16', href=require('images/favicons/favicon-16x16.png'))
41+
link(rel='shortcut icon', href=require('images/favicons/favicon.ico'))
4242

4343
//- Preload fonts
44-
link(type='font/woff', href=require('source/assets/fonts/Quicksand-Bold.woff').default, rel='preload', as='font', crossorigin)
45-
link(type='font/woff', href=require('source/assets/fonts/Quicksand-Medium.woff').default, rel='preload', as='font', crossorigin)
46-
link(type='font/woff', href=require('source/assets/fonts/Quicksand-Regular.woff').default, rel='preload', as='font', crossorigin)
47-
link(type='font/woff', href=require('source/assets/fonts/Quicksand-Light.woff').default, rel='preload', as='font', crossorigin)
44+
link(type='font/woff', href=require('source/assets/fonts/Quicksand-Bold.woff'), rel='preload', as='font', crossorigin)
45+
link(type='font/woff', href=require('source/assets/fonts/Quicksand-Medium.woff'), rel='preload', as='font', crossorigin)
46+
link(type='font/woff', href=require('source/assets/fonts/Quicksand-Regular.woff'), rel='preload', as='font', crossorigin)
47+
link(type='font/woff', href=require('source/assets/fonts/Quicksand-Light.woff'), rel='preload', as='font', crossorigin)
4848

4949
//- Title
5050
block title

0 commit comments

Comments
 (0)