Add webpack config for making a headless build

This commit is contained in:
JC Brand 2019-09-11 17:18:11 +02:00
parent 41c4f9ceb2
commit b3e13c5ea5
4 changed files with 22 additions and 34 deletions

View File

@ -167,17 +167,14 @@ logo/conversejs-filled%.png:: logo/conversejs-filled.svg
$(INKSCAPE) -e $@ -w $* $< $(INKSCAPE) -e $@ -w $* $<
$(OXIPNG) $@ $(OXIPNG) $@
BUILDS = src/headless/dist/converse-headless.js \ BUILDS = src/headless/dist/converse-headless.min.js
src/headless/dist/converse-headless.min.js
@converse/headless: src/headless
src/headless/dist/converse-headless.js: src webpack.common.js stamp-npm @converse/headless
npm run converse-headless.js
src/headless/dist/converse-headless.min.js: src webpack.common.js stamp-npm @converse/headless src/headless/dist/converse-headless.min.js: src webpack.common.js stamp-npm @converse/headless
npm run converse-headless.min.js npm run converse-headless.min.js
@converse/headless: src/headless
.PHONY: dist .PHONY: dist
dist:: build dist:: build

View File

@ -17,8 +17,7 @@
"scripts": { "scripts": {
"serve": "webpack-dev-server --config webpack.serve.js", "serve": "webpack-dev-server --config webpack.serve.js",
"clean": "rm -rf node_modules stamp-npm dist *.zip", "clean": "rm -rf node_modules stamp-npm dist *.zip",
"converse-headless.js": "webpack --mode=development --type=headless", "converse-headless.min.js": "webpack --config webpack.headless.js",
"converse-headless.min.js": "npm run converse-headless.js && webpack --mode=production --type=headless",
"nodeps": "webpack --config webpack.nodeps.js", "nodeps": "webpack --config webpack.nodeps.js",
"build": "webpack --config webpack.prod.js", "build": "webpack --config webpack.prod.js",
"dev": "webpack --config webpack.dev.js", "dev": "webpack --config webpack.dev.js",

View File

@ -1,10 +1,8 @@
/* global __dirname, module, process */ /* global __dirname, module, process */
const HTMLWebpackPlugin = require('html-webpack-plugin');
const minimist = require('minimist');
const path = require('path'); const path = require('path');
const webpack = require('webpack'); const webpack = require('webpack');
const config = { module.exports = {
output: { output: {
path: path.resolve(__dirname, 'dist'), // Output path for generated bundles path: path.resolve(__dirname, 'dist'), // Output path for generated bundles
publicPath: '/dist/', // URL base path for all assets publicPath: '/dist/', // URL base path for all assets
@ -140,26 +138,3 @@ const config = {
} }
} }
} }
function extend (o1, o2) {
for (var i in o2) {
if (Object.prototype.hasOwnProperty.call(o2, i)) {
o1[i] = o2[i];
}
}
}
function parameterize () {
const type = minimist(process.argv.slice(2)).type;
const mode = minimist(process.argv.slice(2)).mode;
const lang = minimist(process.argv.slice(2)).lang;
if (type === 'headless') {
console.log("Making a headless build");
config.entry = "@converse/headless/headless.js";
config.output.filename = 'converse-headless.js';
}
}
parameterize();
module.exports = config;

17
webpack.headless.js Normal file
View File

@ -0,0 +1,17 @@
/* global __dirname, module */
const common = require("./webpack.common.js");
const merge = require("webpack-merge");
const path = require('path');
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
module.exports = merge(common, {
entry: "@converse/headless/headless.js",
output: {
path: path.resolve(__dirname, 'src/headless/dist'), // Output path for generated bundles
filename: 'converse-headless.min.js',
chunkFilename: '[name].js'
},
mode: "production",
devtool: "source-map",
});