Skip to content

Commit 7877f71

Browse files
committed
feat: Hidden 'dotfiles' within an extraResources folder aren't copied
Closes #733
1 parent b4aa52a commit 7877f71

File tree

5 files changed

+41
-9
lines changed

5 files changed

+41
-9
lines changed

docs/Options.md

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,7 @@ macOS only.
184184
| Name | Description
185185
| --- | ---
186186
| **name** | <a name="Protocol-name"></a>The name. e.g. `IRC server URL`.
187+
| role | <a name="Protocol-role"></a>*macOS-only* The app’s role with respect to the type. The value can be `Editor`, `Viewer`, `Shell`, or `None`. Defaults to `Editor`.
187188
| **schemes** | <a name="Protocol-schemes"></a>The schemes. e.g. `["irc", "ircs"]`.
188189

189190
<a name="MetadataDirectories"></a>
@@ -198,7 +199,14 @@ macOS only.
198199

199200
# File Patterns
200201

201-
[build.files](#BuildMetadata-files) defaults to `**/*` (i.e. [hidden files are ignored by default](https://www.npmjs.com/package/glob#dots)).
202+
[build.files](#BuildMetadata-files) defaults to:
203+
* `**/*`
204+
* `!**/node_modules/*/{README.md,README,readme.md,readme,test}`
205+
* `!**/node_modules/.bin`
206+
* `!**/*.{o,hprof,orig,pyc,pyo,rbc}`
207+
* `!**/{.DS_Store,.git,.hg,.svn,CVS,RCS,SCCS,__pycache__,thumbs.db}`
208+
209+
[Hidden files are not ignored by default](https://www.npmjs.com/package/glob#dots), but as you see, all files that should be ignored, are ignored by default.
202210

203211
Development dependencies are never copied in any case. You don't need to ignore it explicitly.
204212

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@
7070
"cli-cursor": "^1.0.2",
7171
"cuint": "^0.2.2",
7272
"debug": "^2.2.0",
73-
"electron-download": "^2.1.2",
73+
"electron-download": "2.1.2",
7474
"electron-osx-sign": "^0.4.0-beta4",
7575
"extract-zip": "^1.5.0",
7676
"fs-extra-p": "^1.1.8",
@@ -121,7 +121,7 @@
121121
"json8": "^0.9.2",
122122
"path-sort": "^0.1.0",
123123
"pre-git": "^3.10.0",
124-
"ts-babel": "^1.0.6",
124+
"ts-babel": "^1.0.7",
125125
"tslint": "^3.15.1",
126126
"typescript": "^2.0.2",
127127
"whitespace": "^2.1.0"

src/fileMatcher.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,8 @@ export class FileMatcher {
3535
}
3636

3737
getParsedPatterns(fromDir?: string): Array<Minimatch> {
38-
const minimatchOptions = {}
38+
// https://github.com/electron-userland/electron-builder/issues/733
39+
const minimatchOptions = {dot: true}
3940

4041
const parsedPatterns: Array<Minimatch> = []
4142
const pathDifference = fromDir ? path.relative(fromDir, this.from) : null
@@ -67,7 +68,7 @@ export class FileMatcher {
6768
return pattern
6869
.replace(/\$\{arch}/g, this.options.arch)
6970
.replace(/\$\{os}/g, this.options.os)
70-
.replace(/\$\{\/\*}/g, "{,/**/*,/**/.*}")
71+
.replace(/\$\{\/\*}/g, "{,/**/*}")
7172
}
7273
}
7374

src/platformPackager.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,9 @@ export abstract class PlatformPackager<DC extends PlatformSpecificBuildOptions>
192192
defaultMatcher.addPattern("**/*")
193193
}
194194
defaultMatcher.addPattern("!**/node_modules/*/{README.md,README,readme.md,readme,test}")
195+
defaultMatcher.addPattern("!**/node_modules/.bin")
196+
defaultMatcher.addPattern("!**/*.{o,hprof,orig,pyc,pyo,rbc}")
197+
defaultMatcher.addPattern("!**/{.DS_Store,.git,.hg,.svn,CVS,RCS,SCCS,__pycache__,thumbs.db}")
195198

196199
let rawFilter: any = null
197200
const deprecatedIgnore = (<any>this.devMetadata.build).ignore

test/src/globTest.ts

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,30 @@ test.ifDevOrLinuxCi("ignore build resources", app({
2828
},
2929
}))
3030

31+
test.ifDevOrLinuxCi("ignore known ignored files", app({
32+
targets: Platform.LINUX.createTarget(DIR_TARGET),
33+
devMetadata: {
34+
build: {
35+
asar: false
36+
}
37+
}
38+
}, {
39+
projectDirCreated: projectDir => BluebirdPromise.all([
40+
outputFile(path.join(projectDir, ".svn", "foo"), "data"),
41+
outputFile(path.join(projectDir, ".git", "foo"), "data"),
42+
outputFile(path.join(projectDir, "foo", "bar", "f.o"), "data"),
43+
outputFile(path.join(projectDir, "node_modules", ".bin", "f.txt"), "data"),
44+
outputFile(path.join(projectDir, "node_modules", ".bin2", "f.txt"), "data"),
45+
]),
46+
packed: async context => {
47+
await assertThat(path.join(context.getResources(Platform.LINUX), "app", ".svn")).doesNotExist()
48+
await assertThat(path.join(context.getResources(Platform.LINUX), "app", ".git")).doesNotExist()
49+
await assertThat(path.join(context.getResources(Platform.LINUX), "app", "foo", "bar", "f.o")).doesNotExist()
50+
await assertThat(path.join(context.getResources(Platform.LINUX), "app", "node_modules", ".bin")).doesNotExist()
51+
await assertThat(path.join(context.getResources(Platform.LINUX), "app", "node_modules", ".bin2")).isDirectory()
52+
},
53+
}))
54+
3155
test.ifDevOrLinuxCi("files", app({
3256
targets: Platform.LINUX.createTarget(DIR_TARGET),
3357
devMetadata: {
@@ -192,7 +216,6 @@ test("extraResources", async () => {
192216
}),
193217
outputFile(path.join(projectDir, "foo/nameWithoutDot"), "nameWithoutDot"),
194218
outputFile(path.join(projectDir, "bar/hello.txt"), "data"),
195-
outputFile(path.join(projectDir, "foo", ".dot"), "data"),
196219
outputFile(path.join(projectDir, `bar/${process.arch}.txt`), "data"),
197220
outputFile(path.join(projectDir, `${osName}/${process.arch}.txt`), "data"),
198221
outputFile(path.join(projectDir, "platformSpecificR"), "platformSpecificR"),
@@ -212,7 +235,6 @@ test("extraResources", async () => {
212235
await assertThat(path.join(resourcesDir, osName, `${process.arch}.txt`)).isFile()
213236
await assertThat(path.join(resourcesDir, "platformSpecificR")).isFile()
214237
await assertThat(path.join(resourcesDir, "ignoreMe.txt")).doesNotExist()
215-
await assertThat(path.join(resourcesDir, "foo", ".dot")).doesNotExist()
216238
},
217239
expectedContents: platform === Platform.WINDOWS ? pathSorter(expectedWinContents.concat(
218240
winDirPrefix + "bar/hello.txt",
@@ -262,7 +284,6 @@ test("extraResources - one-package", async () => {
262284
}),
263285
outputFile(path.join(projectDir, "foo/nameWithoutDot"), "nameWithoutDot"),
264286
outputFile(path.join(projectDir, "bar/hello.txt"), "data"),
265-
outputFile(path.join(projectDir, "foo", ".dot"), "data"),
266287
outputFile(path.join(projectDir, `bar/${process.arch}.txt`), "data"),
267288
outputFile(path.join(projectDir, `${osName}/${process.arch}.txt`), "data"),
268289
outputFile(path.join(projectDir, "platformSpecificR"), "platformSpecificR"),
@@ -290,7 +311,6 @@ test("extraResources - one-package", async () => {
290311
await assertThat(path.join(resourcesDir, osName, `${process.arch}.txt`)).isFile()
291312
await assertThat(path.join(resourcesDir, "platformSpecificR")).isFile()
292313
await assertThat(path.join(resourcesDir, "ignoreMe.txt")).doesNotExist()
293-
await assertThat(path.join(resourcesDir, "foo", ".dot")).doesNotExist()
294314
},
295315
expectedContents: platform === Platform.WINDOWS ? pathSorter(expectedWinContents.concat(
296316
winDirPrefix + "bar/hello.txt",

0 commit comments

Comments
 (0)