feat(zip)!: add includeSources and rename ignoredSources to excludeSources (#378)

Co-authored-by: Aaron <aaronklinker1@gmail.com>

BREAKING CHANGE: Renamed `ignoredSources` to `excludeSources`
This commit is contained in:
Nenad Novaković
2024-01-29 18:13:39 +01:00
committed by GitHub
parent eb758bdeb8
commit 2dcdae91eb
5 changed files with 29 additions and 8 deletions
@@ -241,8 +241,9 @@ function resolveInternalZipConfig(
sourcesTemplate: '{{name}}-{{version}}-sources.zip',
artifactTemplate: '{{name}}-{{version}}-{{browser}}.zip',
sourcesRoot: root,
includeSources: [],
...mergedConfig.zip,
ignoredSources: [
excludeSources: [
'**/node_modules',
// WXT files
'**/web-ext.config.ts',
@@ -252,7 +253,7 @@ function resolveInternalZipConfig(
'**/__tests__/**',
'**/*.+(test|spec).?(c|m)+(j|t)s?(x)',
// From user
...(mergedConfig.zip?.ignoredSources ?? []),
...(mergedConfig.zip?.excludeSources ?? []),
],
};
}
+2 -1
View File
@@ -232,7 +232,8 @@ export const fakeInternalConfig = fakeObjectCreator<InternalConfig>(() => {
},
zip: {
artifactTemplate: '{{name}}-{{version}}.zip',
ignoredSources: [],
includeSources: [],
excludeSources: [],
sourcesRoot: fakeDir(),
sourcesTemplate: '{{name}}-sources.zip',
name: faker.person.firstName().toLowerCase(),
+8 -3
View File
@@ -62,10 +62,15 @@ export async function zip(config?: InlineConfig): Promise<string[]> {
saveTo: sourcesZipPath,
filter(path) {
const relativePath = relative(internalConfig.zip.sourcesRoot, path);
const matchedPattern = internalConfig.zip.ignoredSources.find(
(pattern) => minimatch(relativePath, pattern),
return (
internalConfig.zip.includeSources.some((pattern) =>
minimatch(relativePath, pattern),
) ||
!internalConfig.zip.excludeSources.some((pattern) =>
minimatch(relativePath, pattern),
)
);
return matchedPattern == null;
},
});
zipFiles.push(sourcesZipPath);
+14 -1
View File
@@ -143,6 +143,19 @@ export interface InlineConfig {
* @default config.root
*/
sourcesRoot?: string;
/**
* [Minimatch](https://www.npmjs.com/package/minimatch) patterns of files to include when
* creating a ZIP of all your source code for Firefox. Patterns are relative to your
* `config.zip.sourcesRoot`.
*
* This setting overrides `excludeSources`. So if a file matches both lists, it is included in the ZIP.
*
* @example
* [
* "coverage", // Ignore the coverage directory in the `sourcesRoot`
* ]
*/
includeSources?: string[];
/**
* [Minimatch](https://www.npmjs.com/package/minimatch) patterns of files to exclude when
* creating a ZIP of all your source code for Firefox. Patterns are relative to your
@@ -155,7 +168,7 @@ export interface InlineConfig {
* "coverage", // Ignore the coverage directory in the `sourcesRoot`
* ]
*/
ignoredSources?: string[];
excludeSources?: string[];
};
/**
+2 -1
View File
@@ -40,7 +40,8 @@ export interface InternalConfig {
name?: string;
artifactTemplate: string;
sourcesTemplate: string;
ignoredSources: string[];
includeSources: string[];
excludeSources: string[];
sourcesRoot: string;
};
transformManifest: (manifest: Manifest.WebExtensionManifest) => void;