webpack: Simplify copied files
As `files` is now the only entry in `info`, rename it to a `copy_files` constant, and drop `info` completely. Drop the "qualify" loop and add the src/ subdirectory to the path directly. This is more explicit, thus easier to understand, and simpler. Drop the now unused "vpath" function.
This commit is contained in:
parent
230c338a5a
commit
9fd1cf7f3f
1 changed files with 7 additions and 38 deletions
|
|
@ -1,53 +1,22 @@
|
||||||
const path = require("path");
|
const path = require("path");
|
||||||
const copy = require("copy-webpack-plugin");
|
const copy = require("copy-webpack-plugin");
|
||||||
const extract = require("mini-css-extract-plugin");
|
const extract = require("mini-css-extract-plugin");
|
||||||
const fs = require("fs");
|
|
||||||
const webpack = require("webpack");
|
const webpack = require("webpack");
|
||||||
const CompressionPlugin = require("compression-webpack-plugin");
|
const CompressionPlugin = require("compression-webpack-plugin");
|
||||||
|
|
||||||
/* These can be overridden, typically from the Makefile.am */
|
|
||||||
const srcdir = (process.env.SRCDIR || __dirname) + path.sep + "src";
|
|
||||||
const builddir = (process.env.SRCDIR || __dirname);
|
|
||||||
const section = process.env.ONLYDIR || null;
|
|
||||||
const nodedir = path.resolve((process.env.SRCDIR || __dirname), "node_modules");
|
const nodedir = path.resolve((process.env.SRCDIR || __dirname), "node_modules");
|
||||||
|
|
||||||
/* A standard nodejs and webpack pattern */
|
/* A standard nodejs and webpack pattern */
|
||||||
var production = process.env.NODE_ENV === 'production';
|
var production = process.env.NODE_ENV === 'production';
|
||||||
|
|
||||||
var info = {
|
// Non-JS files which are copied verbatim to dist/
|
||||||
files: [
|
const copy_files = [
|
||||||
"index.html",
|
"./src/index.html",
|
||||||
"manifest.json",
|
"./src/manifest.json",
|
||||||
],
|
];
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
const plugins = [
|
||||||
* Note that we're avoiding the use of path.join as webpack and nodejs
|
new copy({ patterns: copy_files }),
|
||||||
* want relative paths that start with ./ explicitly.
|
|
||||||
*
|
|
||||||
* In addition we mimic the VPATH style functionality of GNU Makefile
|
|
||||||
* where we first check builddir, and then srcdir.
|
|
||||||
*/
|
|
||||||
|
|
||||||
function vpath(/* ... */) {
|
|
||||||
var filename = Array.prototype.join.call(arguments, path.sep);
|
|
||||||
var expanded = builddir + path.sep + filename;
|
|
||||||
if (fs.existsSync(expanded))
|
|
||||||
return expanded;
|
|
||||||
expanded = srcdir + path.sep + filename;
|
|
||||||
return expanded;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Qualify all the paths in files listed */
|
|
||||||
var files = [];
|
|
||||||
info.files.forEach(function(value) {
|
|
||||||
if (!section || value.indexOf(section) === 0)
|
|
||||||
files.push({ from: vpath("src", value), to: value });
|
|
||||||
});
|
|
||||||
info.files = files;
|
|
||||||
|
|
||||||
var plugins = [
|
|
||||||
new copy({ patterns: info.files }),
|
|
||||||
new extract({filename: "[name].css"})
|
new extract({filename: "[name].css"})
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue