Build exclude files (#1125)
* Add support for excluding files from the build process * Delete existing file before creating .zip * Exclude sw.js from non-MV3 builds
This commit is contained in:
parent
51223abfa6
commit
0d0728fac0
38
dev/build.js
38
dev/build.js
@ -27,15 +27,18 @@ function clone(value) {
|
|||||||
return JSON.parse(JSON.stringify(value));
|
return JSON.parse(JSON.stringify(value));
|
||||||
}
|
}
|
||||||
|
|
||||||
async function createZip(directory, outputFileName, sevenZipExes=[], onUpdate=null) {
|
async function createZip(directory, excludeFiles, outputFileName, sevenZipExes=[], onUpdate=null) {
|
||||||
|
fs.unlinkSync(outputFileName);
|
||||||
for (const exe of sevenZipExes) {
|
for (const exe of sevenZipExes) {
|
||||||
try {
|
try {
|
||||||
|
const excludeArguments = excludeFiles.map((excludeFilePath) => `-x!${excludeFilePath}`);
|
||||||
childProcess.execFileSync(
|
childProcess.execFileSync(
|
||||||
exe,
|
exe,
|
||||||
[
|
[
|
||||||
'a',
|
'a',
|
||||||
outputFileName,
|
outputFileName,
|
||||||
'.'
|
'.',
|
||||||
|
...excludeArguments
|
||||||
],
|
],
|
||||||
{
|
{
|
||||||
cwd: directory
|
cwd: directory
|
||||||
@ -46,12 +49,13 @@ async function createZip(directory, outputFileName, sevenZipExes=[], onUpdate=nu
|
|||||||
// NOP
|
// NOP
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return await createJSZip(directory, outputFileName, onUpdate);
|
return await createJSZip(directory, excludeFiles, outputFileName, onUpdate);
|
||||||
}
|
}
|
||||||
|
|
||||||
async function createJSZip(directory, outputFileName, onUpdate) {
|
async function createJSZip(directory, excludeFiles, outputFileName, onUpdate) {
|
||||||
const JSZip = util.JSZip;
|
const JSZip = util.JSZip;
|
||||||
const files = getAllFiles(directory, directory);
|
const files = getAllFiles(directory, directory);
|
||||||
|
removeItemsFromArray(files, excludeFiles);
|
||||||
const zip = new JSZip();
|
const zip = new JSZip();
|
||||||
for (const fileName of files) {
|
for (const fileName of files) {
|
||||||
zip.file(
|
zip.file(
|
||||||
@ -75,6 +79,27 @@ async function createJSZip(directory, outputFileName, onUpdate) {
|
|||||||
fs.writeFileSync(outputFileName, data, {encoding: null, flag: 'w'});
|
fs.writeFileSync(outputFileName, data, {encoding: null, flag: 'w'});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function removeItemsFromArray(array, removeItems) {
|
||||||
|
for (const item of removeItems) {
|
||||||
|
const index = getIndexOfFilePath(array, item);
|
||||||
|
if (index >= 0) {
|
||||||
|
array.splice(index, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function getIndexOfFilePath(array, item) {
|
||||||
|
const pattern = /\\/g;
|
||||||
|
const separator = '/';
|
||||||
|
item = item.replace(pattern, separator);
|
||||||
|
for (let i = 0, ii = array.length; i < ii; ++i) {
|
||||||
|
if (array[i].replace(pattern, separator) === item) {
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
function applyModifications(manifest, modifications) {
|
function applyModifications(manifest, modifications) {
|
||||||
if (Array.isArray(modifications)) {
|
if (Array.isArray(modifications)) {
|
||||||
for (const modification of modifications) {
|
for (const modification of modifications) {
|
||||||
@ -271,6 +296,9 @@ async function build(manifest, buildDir, extDir, manifestPath, variantMap, varia
|
|||||||
if (typeof variant === 'undefined') { continue; }
|
if (typeof variant === 'undefined') { continue; }
|
||||||
|
|
||||||
const {name, fileName, fileCopies} = variant;
|
const {name, fileName, fileCopies} = variant;
|
||||||
|
let {excludeFiles} = variant;
|
||||||
|
if (!Array.isArray(excludeFiles)) { excludeFiles = []; }
|
||||||
|
|
||||||
process.stdout.write(`Building ${name}...\n`);
|
process.stdout.write(`Building ${name}...\n`);
|
||||||
|
|
||||||
const modifiedManifest = createVariantManifest(manifest, variant, variantMap);
|
const modifiedManifest = createVariantManifest(manifest, variant, variantMap);
|
||||||
@ -278,7 +306,7 @@ async function build(manifest, buildDir, extDir, manifestPath, variantMap, varia
|
|||||||
const fileNameSafe = path.basename(fileName);
|
const fileNameSafe = path.basename(fileName);
|
||||||
const fullFileName = path.join(buildDir, fileNameSafe);
|
const fullFileName = path.join(buildDir, fileNameSafe);
|
||||||
fs.writeFileSync(manifestPath, createManifestString(modifiedManifest));
|
fs.writeFileSync(manifestPath, createManifestString(modifiedManifest));
|
||||||
await createZip(extDir, fullFileName, sevenZipExes, onUpdate);
|
await createZip(extDir, excludeFiles, fullFileName, sevenZipExes, onUpdate);
|
||||||
|
|
||||||
if (Array.isArray(fileCopies)) {
|
if (Array.isArray(fileCopies)) {
|
||||||
for (const fileName2 of fileCopies) {
|
for (const fileName2 of fileCopies) {
|
||||||
|
@ -108,7 +108,10 @@
|
|||||||
"variants": [
|
"variants": [
|
||||||
{
|
{
|
||||||
"name": "chrome",
|
"name": "chrome",
|
||||||
"fileName": "yomichan-chrome.zip"
|
"fileName": "yomichan-chrome.zip",
|
||||||
|
"excludeFiles": [
|
||||||
|
"sw.js"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "chrome-dev",
|
"name": "chrome-dev",
|
||||||
@ -128,6 +131,9 @@
|
|||||||
"patternFlags": "",
|
"patternFlags": "",
|
||||||
"replacement": "$1. This is a development build; get the stable version here: https://tinyurl.com/yaatdjmp"
|
"replacement": "$1. This is a development build; get the stable version here: https://tinyurl.com/yaatdjmp"
|
||||||
}
|
}
|
||||||
|
],
|
||||||
|
"excludeFiles": [
|
||||||
|
"sw.js"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -179,6 +185,9 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
],
|
||||||
|
"excludeFiles": [
|
||||||
|
"sw.js"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -205,6 +214,9 @@
|
|||||||
"path": ["browser_specific_settings", "gecko", "id"],
|
"path": ["browser_specific_settings", "gecko", "id"],
|
||||||
"value": "alex.testing@foosoft.net"
|
"value": "alex.testing@foosoft.net"
|
||||||
}
|
}
|
||||||
|
],
|
||||||
|
"excludeFiles": [
|
||||||
|
"sw.js"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
Loading…
Reference in New Issue
Block a user