From 9d0911e7a4751acc9b58af2aa58aaafcf15de129 Mon Sep 17 00:00:00 2001 From: JeanJPNM <61994401+JeanJPNM@users.noreply.github.com> Date: Wed, 14 Jul 2021 11:11:46 -0300 Subject: [PATCH 01/42] add api to let adapters modify the user's .gitignore --- packages/kit/src/core/adapter-utils.js | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/packages/kit/src/core/adapter-utils.js b/packages/kit/src/core/adapter-utils.js index 192a962ff57c..61cd145052ce 100644 --- a/packages/kit/src/core/adapter-utils.js +++ b/packages/kit/src/core/adapter-utils.js @@ -14,3 +14,25 @@ export function isContentTypeBinary(content_type) { content_type.startsWith('application/octet-stream') ); } + +/** Adds glob patterns to the + * @param {object} options + * @param {string[]} options.patterns An array of glob patterns to be inserted into the project's `.gitignore` file + * @param {boolean} [options.generate] Whether the `.gitignore` file should be created if it doesn't exist + * @param {string} options.name The name of the adapter + */ +export async function updateGitIgnore({ patterns, generate = false, name }) { + const path = '.gitignore'; + const { existsSync } = await import('fs'); + const { readFile, writeFile, appendFile } = await import('fs/promises'); + if (!existsSync(path)) { + if (!generate) return; + await writeFile(path, ''); + } + const file = await readFile(path, { + encoding: 'utf-8' + }); + if (file.includes(`# Generated by ${name}`)) return; + const text = `\n# Generated by ${name}\n${patterns.join('\n')}`; + await appendFile(path, text); +} From b5e2f868a06e68e87751ace8dd96efd9ea492cb8 Mon Sep 17 00:00:00 2001 From: JeanJPNM <61994401+JeanJPNM@users.noreply.github.com> Date: Wed, 14 Jul 2021 11:17:12 -0300 Subject: [PATCH 02/42] update documentation --- packages/kit/src/core/adapter-utils.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/kit/src/core/adapter-utils.js b/packages/kit/src/core/adapter-utils.js index 61cd145052ce..3206f6645068 100644 --- a/packages/kit/src/core/adapter-utils.js +++ b/packages/kit/src/core/adapter-utils.js @@ -15,7 +15,7 @@ export function isContentTypeBinary(content_type) { ); } -/** Adds glob patterns to the +/** Adds glob patterns to the project's `.gitignore` * @param {object} options * @param {string[]} options.patterns An array of glob patterns to be inserted into the project's `.gitignore` file * @param {boolean} [options.generate] Whether the `.gitignore` file should be created if it doesn't exist From 9c965397d779550c33789d8217ce784ecd467cdf Mon Sep 17 00:00:00 2001 From: JeanJPNM <61994401+JeanJPNM@users.noreply.github.com> Date: Fri, 16 Jul 2021 14:02:26 -0300 Subject: [PATCH 03/42] handle changes in ignored files --- packages/kit/src/core/adapter-utils.js | 48 +++++++++++++++++++++----- 1 file changed, 39 insertions(+), 9 deletions(-) diff --git a/packages/kit/src/core/adapter-utils.js b/packages/kit/src/core/adapter-utils.js index f5aba0bc7801..1c7f749e65d9 100644 --- a/packages/kit/src/core/adapter-utils.js +++ b/packages/kit/src/core/adapter-utils.js @@ -21,20 +21,50 @@ export function isContentTypeTextual(content_type) { * @param {object} options * @param {string[]} options.patterns An array of glob patterns to be inserted into the project's `.gitignore` file * @param {boolean} [options.generate] Whether the `.gitignore` file should be created if it doesn't exist - * @param {string} options.name The name of the adapter */ -export async function updateGitIgnore({ patterns, generate = false, name }) { - const path = '.gitignore'; +export async function updateGitIgnore({ patterns, generate = false }) { const { existsSync } = await import('fs'); const { readFile, writeFile, appendFile } = await import('fs/promises'); + + const path = '.gitignore'; + const title = '# Generated adapter build'; + if (!existsSync(path)) { if (!generate) return; await writeFile(path, ''); } - const file = await readFile(path, { - encoding: 'utf-8' - }); - if (file.includes(`# Generated by ${name}`)) return; - const text = `\n# Generated by ${name}\n${patterns.join('\n')}`; - await appendFile(path, text); + + const file = await readFile(path, { encoding: 'utf-8' }); + const lines = file.split('\n'); + const start_index = lines.indexOf(title); + + if (start_index === -1) { + const last = lines[lines.length - 1]; + if (last.trim().length !== 0) { + await appendFile(path, '\n'); + } + await appendFile(path, ['', title, ...patterns].join('\n')); + return; + } + + let insertion_index = lines.length - 1; + for (let i = start_index; i < lines.length; i++) { + const line = lines[i]; + if (line.trim().length === 0) { + insertion_index = i; + break; + } + } + const new_lines = new Set(patterns); + for (const line of lines) { + new_lines.delete(line); + } + if (new_lines.size === 0) return; + + lines.splice(insertion_index, 0, ...new_lines); + await writeFile(path, lines.join('\n')); } + +updateGitIgnore({ + patterns: ['.foo', 'mehdasd/asdad', 'bar;sd'] +}); From 1443779d55b8361f436d7c596c295758486bf945 Mon Sep 17 00:00:00 2001 From: JeanJPNM <61994401+JeanJPNM@users.noreply.github.com> Date: Fri, 16 Jul 2021 14:02:44 -0300 Subject: [PATCH 04/42] remove test code --- packages/kit/src/core/adapter-utils.js | 4 ---- 1 file changed, 4 deletions(-) diff --git a/packages/kit/src/core/adapter-utils.js b/packages/kit/src/core/adapter-utils.js index 1c7f749e65d9..1d172fea0f15 100644 --- a/packages/kit/src/core/adapter-utils.js +++ b/packages/kit/src/core/adapter-utils.js @@ -64,7 +64,3 @@ export async function updateGitIgnore({ patterns, generate = false }) { lines.splice(insertion_index, 0, ...new_lines); await writeFile(path, lines.join('\n')); } - -updateGitIgnore({ - patterns: ['.foo', 'mehdasd/asdad', 'bar;sd'] -}); From cb1d390dbefc296d195a20c50af5ca99abf217a3 Mon Sep 17 00:00:00 2001 From: JeanJPNM <61994401+JeanJPNM@users.noreply.github.com> Date: Fri, 16 Jul 2021 14:09:01 -0300 Subject: [PATCH 05/42] support updating multiple files --- packages/kit/src/core/adapter-utils.js | 68 ++++++++++++++------------ 1 file changed, 38 insertions(+), 30 deletions(-) diff --git a/packages/kit/src/core/adapter-utils.js b/packages/kit/src/core/adapter-utils.js index 1d172fea0f15..c4006b08ad4b 100644 --- a/packages/kit/src/core/adapter-utils.js +++ b/packages/kit/src/core/adapter-utils.js @@ -18,49 +18,57 @@ export function isContentTypeTextual(content_type) { } /** Adds glob patterns to the project's `.gitignore` + * + * This function should be run at build time. * @param {object} options * @param {string[]} options.patterns An array of glob patterns to be inserted into the project's `.gitignore` file * @param {boolean} [options.generate] Whether the `.gitignore` file should be created if it doesn't exist */ -export async function updateGitIgnore({ patterns, generate = false }) { +export async function updateIgnores({ patterns, generate = false }) { const { existsSync } = await import('fs'); const { readFile, writeFile, appendFile } = await import('fs/promises'); - const path = '.gitignore'; + const targets = ['.gitignore', '.prettierignore', '.eslintignore']; const title = '# Generated adapter build'; - if (!existsSync(path)) { - if (!generate) return; - await writeFile(path, ''); - } + for (const target of targets) { + if (!existsSync(target)) { + if (!generate) continue; + await writeFile(target, ''); + } - const file = await readFile(path, { encoding: 'utf-8' }); - const lines = file.split('\n'); - const start_index = lines.indexOf(title); + const file = await readFile(target, { encoding: 'utf-8' }); + const lines = file.split('\n'); + const start_index = lines.indexOf(title); - if (start_index === -1) { - const last = lines[lines.length - 1]; - if (last.trim().length !== 0) { - await appendFile(path, '\n'); + // append to file + if (start_index === -1) { + const last = lines[lines.length - 1]; + if (last.trim().length !== 0) { + await appendFile(target, '\n'); + } + await appendFile(target, ['', title, ...patterns].join('\n')); + continue; } - await appendFile(path, ['', title, ...patterns].join('\n')); - return; - } - let insertion_index = lines.length - 1; - for (let i = start_index; i < lines.length; i++) { - const line = lines[i]; - if (line.trim().length === 0) { - insertion_index = i; - break; + let insertion_index = lines.length - 1; + + // find last empty line + for (let i = start_index; i < lines.length; i++) { + const line = lines[i]; + if (line.trim().length === 0) { + insertion_index = i; + break; + } } - } - const new_lines = new Set(patterns); - for (const line of lines) { - new_lines.delete(line); - } - if (new_lines.size === 0) return; + const new_lines = new Set(patterns); + // remove repeated lines + for (const line of lines) { + new_lines.delete(line); + } + if (new_lines.size === 0) return; - lines.splice(insertion_index, 0, ...new_lines); - await writeFile(path, lines.join('\n')); + lines.splice(insertion_index, 0, ...new_lines); + await writeFile(target, lines.join('\n')); + } } From 7ef9b75d7db5ded9e4fccb5096fb363533168f7a Mon Sep 17 00:00:00 2001 From: JeanJPNM <61994401+JeanJPNM@users.noreply.github.com> Date: Fri, 16 Jul 2021 14:10:59 -0300 Subject: [PATCH 06/42] add TODO --- packages/kit/src/core/adapter-utils.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/kit/src/core/adapter-utils.js b/packages/kit/src/core/adapter-utils.js index c4006b08ad4b..e3c364dd8596 100644 --- a/packages/kit/src/core/adapter-utils.js +++ b/packages/kit/src/core/adapter-utils.js @@ -31,6 +31,8 @@ export async function updateIgnores({ patterns, generate = false }) { const targets = ['.gitignore', '.prettierignore', '.eslintignore']; const title = '# Generated adapter build'; + // TODO: mapping each target to a promise and + // using Promise.all may have a better performance for (const target of targets) { if (!existsSync(target)) { if (!generate) continue; From c436c637b6dd71c390555c9746ba0a3d06db275d Mon Sep 17 00:00:00 2001 From: JeanJPNM <61994401+JeanJPNM@users.noreply.github.com> Date: Fri, 16 Jul 2021 14:13:50 -0300 Subject: [PATCH 07/42] add changeset --- .changeset/big-countries-pump.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/big-countries-pump.md diff --git a/.changeset/big-countries-pump.md b/.changeset/big-countries-pump.md new file mode 100644 index 000000000000..8449c8abde9b --- /dev/null +++ b/.changeset/big-countries-pump.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/kit': patch +--- + +Add public API to let adapters update .gitignore and files alike From 572b1a26345cd376ebebf17134208e6f7741ceb6 Mon Sep 17 00:00:00 2001 From: JeanJPNM <61994401+JeanJPNM@users.noreply.github.com> Date: Fri, 16 Jul 2021 14:21:56 -0300 Subject: [PATCH 08/42] use fs instead of fs/promises --- packages/kit/src/core/adapter-utils.js | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/packages/kit/src/core/adapter-utils.js b/packages/kit/src/core/adapter-utils.js index e3c364dd8596..339a27271193 100644 --- a/packages/kit/src/core/adapter-utils.js +++ b/packages/kit/src/core/adapter-utils.js @@ -25,21 +25,18 @@ export function isContentTypeTextual(content_type) { * @param {boolean} [options.generate] Whether the `.gitignore` file should be created if it doesn't exist */ export async function updateIgnores({ patterns, generate = false }) { - const { existsSync } = await import('fs'); - const { readFile, writeFile, appendFile } = await import('fs/promises'); + const fs = await import('fs'); const targets = ['.gitignore', '.prettierignore', '.eslintignore']; const title = '# Generated adapter build'; - // TODO: mapping each target to a promise and - // using Promise.all may have a better performance for (const target of targets) { - if (!existsSync(target)) { + if (!fs.existsSync(target)) { if (!generate) continue; - await writeFile(target, ''); + fs.writeFileSync(target, ''); } - const file = await readFile(target, { encoding: 'utf-8' }); + const file = fs.readFileSync(target, { encoding: 'utf-8' }); const lines = file.split('\n'); const start_index = lines.indexOf(title); @@ -47,9 +44,9 @@ export async function updateIgnores({ patterns, generate = false }) { if (start_index === -1) { const last = lines[lines.length - 1]; if (last.trim().length !== 0) { - await appendFile(target, '\n'); + fs.appendFileSync(target, '\n'); } - await appendFile(target, ['', title, ...patterns].join('\n')); + fs.appendFileSync(target, ['', title, ...patterns].join('\n')); continue; } @@ -71,6 +68,6 @@ export async function updateIgnores({ patterns, generate = false }) { if (new_lines.size === 0) return; lines.splice(insertion_index, 0, ...new_lines); - await writeFile(target, lines.join('\n')); + fs.writeFileSync(target, lines.join('\n')); } } From 9ce434ee88b7026892c2e79acc7c971094911cb7 Mon Sep 17 00:00:00 2001 From: JeanJPNM <61994401+JeanJPNM@users.noreply.github.com> Date: Fri, 16 Jul 2021 14:28:53 -0300 Subject: [PATCH 09/42] update documentation --- packages/kit/src/core/adapter-utils.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/kit/src/core/adapter-utils.js b/packages/kit/src/core/adapter-utils.js index 339a27271193..41286957b15c 100644 --- a/packages/kit/src/core/adapter-utils.js +++ b/packages/kit/src/core/adapter-utils.js @@ -17,7 +17,7 @@ export function isContentTypeTextual(content_type) { ); } -/** Adds glob patterns to the project's `.gitignore` +/** Adds glob patterns to the project's `.gitignore` and files alike * * This function should be run at build time. * @param {object} options From 7ad5add585bd0dfa52d4fc050610c112a52b6253 Mon Sep 17 00:00:00 2001 From: JeanJPNM <61994401+JeanJPNM@users.noreply.github.com> Date: Fri, 16 Jul 2021 14:57:29 -0300 Subject: [PATCH 10/42] fix error inside loop --- packages/kit/src/core/adapter-utils.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/kit/src/core/adapter-utils.js b/packages/kit/src/core/adapter-utils.js index 41286957b15c..86bb2a9d55c6 100644 --- a/packages/kit/src/core/adapter-utils.js +++ b/packages/kit/src/core/adapter-utils.js @@ -65,7 +65,7 @@ export async function updateIgnores({ patterns, generate = false }) { for (const line of lines) { new_lines.delete(line); } - if (new_lines.size === 0) return; + if (new_lines.size === 0) continue; lines.splice(insertion_index, 0, ...new_lines); fs.writeFileSync(target, lines.join('\n')); From 044098375b41c2fdd3b7c423c901bcbe04ad1689 Mon Sep 17 00:00:00 2001 From: JeanJPNM <61994401+JeanJPNM@users.noreply.github.com> Date: Fri, 16 Jul 2021 14:58:08 -0300 Subject: [PATCH 11/42] fix empty line at the start of a file --- packages/kit/src/core/adapter-utils.js | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/packages/kit/src/core/adapter-utils.js b/packages/kit/src/core/adapter-utils.js index 86bb2a9d55c6..5543239bf57c 100644 --- a/packages/kit/src/core/adapter-utils.js +++ b/packages/kit/src/core/adapter-utils.js @@ -42,11 +42,12 @@ export async function updateIgnores({ patterns, generate = false }) { // append to file if (start_index === -1) { + let prefix = ''; const last = lines[lines.length - 1]; - if (last.trim().length !== 0) { - fs.appendFileSync(target, '\n'); - } - fs.appendFileSync(target, ['', title, ...patterns].join('\n')); + if (lines.length > 1) prefix += '\n'; + if (last.trim().length !== 0) prefix += '\n'; + + fs.appendFileSync(target, [`${prefix}${title}`, ...patterns].join('\n')); continue; } From f2571e116cb55017e51ca4efbb6591e27f7fa395 Mon Sep 17 00:00:00 2001 From: JeanJPNM <61994401+JeanJPNM@users.noreply.github.com> Date: Fri, 16 Jul 2021 16:42:53 -0300 Subject: [PATCH 12/42] move function to utils object --- packages/kit/src/core/adapt/utils.js | 52 ++++++++++++++++++++++++ packages/kit/src/core/adapter-utils.js | 56 -------------------------- packages/kit/types/config.d.ts | 1 + 3 files changed, 53 insertions(+), 56 deletions(-) diff --git a/packages/kit/src/core/adapt/utils.js b/packages/kit/src/core/adapt/utils.js index 21ee6822b0f4..7bd474db39b9 100644 --- a/packages/kit/src/core/adapt/utils.js +++ b/packages/kit/src/core/adapt/utils.js @@ -1,6 +1,7 @@ import { SVELTE_KIT } from '../constants.js'; import { copy, rimraf, mkdirp } from '../filesystem/index.js'; import { prerender } from './prerender.js'; +import fs from 'fs'; /** * @@ -47,6 +48,57 @@ export function get_utils({ cwd, config, build_data, log }) { log }); } + }, + + /** @param {{patterns: string[], generate?: boolean}} options */ + update_ignores({ patterns, generate = false }) { + const targets = ['.gitignore', '.prettierignore', '.eslintignore']; + const title = '# Generated adapter build'; + let changed = false; + for (const target of targets) { + if (!fs.existsSync(target)) { + if (!generate) continue; + fs.writeFileSync(target, ''); + } + + const file = fs.readFileSync(target, { encoding: 'utf-8' }); + const lines = file.split('\n'); + const start_index = lines.indexOf(title); + + // append to file + if (start_index === -1) { + let prefix = ''; + const last = lines[lines.length - 1]; + if (lines.length > 1) prefix += '\n'; + if (last.trim().length !== 0) prefix += '\n'; + + fs.appendFileSync(target, [`${prefix}${title}`, ...patterns].join('\n')); + changed = true; + continue; + } + + let insertion_index = lines.length - 1; + + // find last empty line + for (let i = start_index; i < lines.length; i++) { + const line = lines[i]; + if (line.trim().length === 0) { + insertion_index = i; + break; + } + } + const new_lines = new Set(patterns); + // remove repeated lines + for (const line of lines) { + new_lines.delete(line); + } + if (new_lines.size === 0) continue; + + lines.splice(insertion_index, 0, ...new_lines); + fs.writeFileSync(target, lines.join('\n')); + changed = true; + } + return changed; } }; } diff --git a/packages/kit/src/core/adapter-utils.js b/packages/kit/src/core/adapter-utils.js index 5543239bf57c..fadbda59204b 100644 --- a/packages/kit/src/core/adapter-utils.js +++ b/packages/kit/src/core/adapter-utils.js @@ -16,59 +16,3 @@ export function isContentTypeTextual(content_type) { type === 'multipart/form-data' ); } - -/** Adds glob patterns to the project's `.gitignore` and files alike - * - * This function should be run at build time. - * @param {object} options - * @param {string[]} options.patterns An array of glob patterns to be inserted into the project's `.gitignore` file - * @param {boolean} [options.generate] Whether the `.gitignore` file should be created if it doesn't exist - */ -export async function updateIgnores({ patterns, generate = false }) { - const fs = await import('fs'); - - const targets = ['.gitignore', '.prettierignore', '.eslintignore']; - const title = '# Generated adapter build'; - - for (const target of targets) { - if (!fs.existsSync(target)) { - if (!generate) continue; - fs.writeFileSync(target, ''); - } - - const file = fs.readFileSync(target, { encoding: 'utf-8' }); - const lines = file.split('\n'); - const start_index = lines.indexOf(title); - - // append to file - if (start_index === -1) { - let prefix = ''; - const last = lines[lines.length - 1]; - if (lines.length > 1) prefix += '\n'; - if (last.trim().length !== 0) prefix += '\n'; - - fs.appendFileSync(target, [`${prefix}${title}`, ...patterns].join('\n')); - continue; - } - - let insertion_index = lines.length - 1; - - // find last empty line - for (let i = start_index; i < lines.length; i++) { - const line = lines[i]; - if (line.trim().length === 0) { - insertion_index = i; - break; - } - } - const new_lines = new Set(patterns); - // remove repeated lines - for (const line of lines) { - new_lines.delete(line); - } - if (new_lines.size === 0) continue; - - lines.splice(insertion_index, 0, ...new_lines); - fs.writeFileSync(target, lines.join('\n')); - } -} diff --git a/packages/kit/types/config.d.ts b/packages/kit/types/config.d.ts index 45482dddb12f..207afbeea464 100644 --- a/packages/kit/types/config.d.ts +++ b/packages/kit/types/config.d.ts @@ -9,6 +9,7 @@ export type AdapterUtils = { copy_server_files: (dest: string) => void; copy_static_files: (dest: string) => void; copy: (from: string, to: string, filter?: (basename: string) => boolean) => void; + update_ignores: ({ patterns, generate }: { patterns: string[]; generate?: boolean }) => boolean; prerender: ({ all, dest, From 62d4ba538e1d901f1be1995b09e1b0841d93df21 Mon Sep 17 00:00:00 2001 From: JeanJPNM <61994401+JeanJPNM@users.noreply.github.com> Date: Fri, 16 Jul 2021 16:57:23 -0300 Subject: [PATCH 13/42] update adapter-node --- packages/adapter-node/index.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/adapter-node/index.js b/packages/adapter-node/index.js index 5640e6804986..33888a559f32 100644 --- a/packages/adapter-node/index.js +++ b/packages/adapter-node/index.js @@ -36,6 +36,9 @@ export default function ({ name: '@sveltejs/adapter-node', async adapt({ utils, config }) { + if (utils.update_ignores({ patterns: [out] })) { + utils.log.minor('Ignore files updated'); + } utils.log.minor('Copying assets'); const static_directory = join(out, 'assets'); utils.copy_client_files(static_directory); From 7d77989559ac0fa985722d2a389e6c6c7f6435bf Mon Sep 17 00:00:00 2001 From: JeanJPNM <61994401+JeanJPNM@users.noreply.github.com> Date: Fri, 16 Jul 2021 17:06:25 -0300 Subject: [PATCH 14/42] update adapter-static --- packages/adapter-static/index.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/adapter-static/index.js b/packages/adapter-static/index.js index 5155fec1b8a6..2e8c15852411 100644 --- a/packages/adapter-static/index.js +++ b/packages/adapter-static/index.js @@ -11,6 +11,9 @@ export default function ({ pages = 'build', assets = pages, fallback } = {}) { name: '@sveltejs/adapter-static', async adapt({ utils }) { + if (utils.update_ignores({ patterns: [pages, assets] })) { + utils.log.minor('Ignore files updated'); + } utils.copy_static_files(assets); utils.copy_client_files(assets); From b9ebbc052cbe5c2ec444b6898f7d7e4dc6f12f76 Mon Sep 17 00:00:00 2001 From: JeanJPNM <61994401+JeanJPNM@users.noreply.github.com> Date: Fri, 16 Jul 2021 17:26:13 -0300 Subject: [PATCH 15/42] allow users to comment out ignore patterns --- packages/kit/src/core/adapt/utils.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/kit/src/core/adapt/utils.js b/packages/kit/src/core/adapt/utils.js index 7bd474db39b9..8370313a843b 100644 --- a/packages/kit/src/core/adapt/utils.js +++ b/packages/kit/src/core/adapt/utils.js @@ -89,8 +89,10 @@ export function get_utils({ cwd, config, build_data, log }) { } const new_lines = new Set(patterns); // remove repeated lines - for (const line of lines) { - new_lines.delete(line); + for (let i = start_index; i < insertion_index; i++) { + const line = lines[i]; + // this will prevent commented ignores to be reinserted + new_lines.delete(line.replace(/#\s*/, '')); } if (new_lines.size === 0) continue; From fe432a703043e67d1e26749070c53aaac2a5681a Mon Sep 17 00:00:00 2001 From: JeanJPNM <61994401+JeanJPNM@users.noreply.github.com> Date: Fri, 16 Jul 2021 17:37:10 -0300 Subject: [PATCH 16/42] fix line verification --- packages/kit/src/core/adapt/utils.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/kit/src/core/adapt/utils.js b/packages/kit/src/core/adapt/utils.js index 8370313a843b..b0d257686f3c 100644 --- a/packages/kit/src/core/adapt/utils.js +++ b/packages/kit/src/core/adapt/utils.js @@ -89,7 +89,7 @@ export function get_utils({ cwd, config, build_data, log }) { } const new_lines = new Set(patterns); // remove repeated lines - for (let i = start_index; i < insertion_index; i++) { + for (let i = start_index; i <= insertion_index; i++) { const line = lines[i]; // this will prevent commented ignores to be reinserted new_lines.delete(line.replace(/#\s*/, '')); From 34c65ebf0462ff5013b91ec8b08e2ed6a4e8199c Mon Sep 17 00:00:00 2001 From: JeanJPNM <61994401+JeanJPNM@users.noreply.github.com> Date: Fri, 16 Jul 2021 17:47:24 -0300 Subject: [PATCH 17/42] improve delimeter title --- packages/kit/src/core/adapt/utils.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/kit/src/core/adapt/utils.js b/packages/kit/src/core/adapt/utils.js index b0d257686f3c..ab0c7f5ac48d 100644 --- a/packages/kit/src/core/adapt/utils.js +++ b/packages/kit/src/core/adapt/utils.js @@ -53,7 +53,7 @@ export function get_utils({ cwd, config, build_data, log }) { /** @param {{patterns: string[], generate?: boolean}} options */ update_ignores({ patterns, generate = false }) { const targets = ['.gitignore', '.prettierignore', '.eslintignore']; - const title = '# Generated adapter build'; + const title = '# Generated adapter output'; let changed = false; for (const target of targets) { if (!fs.existsSync(target)) { From e511a18e20674fdd21d4954142197eb1e7feb645 Mon Sep 17 00:00:00 2001 From: JeanJPNM <61994401+JeanJPNM@users.noreply.github.com> Date: Fri, 16 Jul 2021 17:48:48 -0300 Subject: [PATCH 18/42] update docs --- documentation/docs/10-adapters.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/documentation/docs/10-adapters.md b/documentation/docs/10-adapters.md index fcfb8bbdef15..e77f1842cd75 100644 --- a/documentation/docs/10-adapters.md +++ b/documentation/docs/10-adapters.md @@ -31,6 +31,15 @@ export default { }; ``` +Some adapters may modify your project's `.gitignore` to include their build output, in case you don't want those files ignored you can comment them out: + +```diff +.svelte-kit +.env +# Generated adapter output +- build ++ # build +``` A variety of official adapters exist for serverless platforms... - [`adapter-cloudflare-workers`](https://github.com/sveltejs/kit/tree/master/packages/adapter-cloudflare-workers) — for [Cloudflare Workers](https://developers.cloudflare.com/workers/) From a75f5aee6ebc96bba0a7067a86336229134ebc02 Mon Sep 17 00:00:00 2001 From: JeanJPNM <61994401+JeanJPNM@users.noreply.github.com> Date: Fri, 16 Jul 2021 18:13:06 -0300 Subject: [PATCH 19/42] update adapter-vercel --- packages/adapter-vercel/index.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/adapter-vercel/index.js b/packages/adapter-vercel/index.js index aef613d2f895..1311ca98ea00 100644 --- a/packages/adapter-vercel/index.js +++ b/packages/adapter-vercel/index.js @@ -10,6 +10,9 @@ export default function () { async adapt({ utils }) { const dir = '.vercel_build_output'; + if (utils.update_ignores({ patterns: [dir] })) { + utils.log.minor('Ignore files updated'); + } utils.rimraf(dir); const files = fileURLToPath(new URL('./files', import.meta.url)); From 5817df0ea4fdfe5b055b0315da8b946999ff6517 Mon Sep 17 00:00:00 2001 From: JeanJPNM <61994401+JeanJPNM@users.noreply.github.com> Date: Fri, 16 Jul 2021 18:20:43 -0300 Subject: [PATCH 20/42] update adapter-cloudfare-workers --- packages/adapter-cloudflare-workers/index.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/adapter-cloudflare-workers/index.js b/packages/adapter-cloudflare-workers/index.js index 856d162d3f27..975d9b42a36b 100644 --- a/packages/adapter-cloudflare-workers/index.js +++ b/packages/adapter-cloudflare-workers/index.js @@ -16,6 +16,10 @@ export default function () { const files = fileURLToPath(new URL('./files', import.meta.url)); + if (utils.update_ignores({ patterns: [bucket, entrypoint] })) { + utils.log.minor('Ignore files updated'); + } + utils.rimraf(bucket); utils.rimraf(entrypoint); From fc0b94b0a20e02ef405af4094d4701f5bd4dca64 Mon Sep 17 00:00:00 2001 From: JeanJPNM <61994401+JeanJPNM@users.noreply.github.com> Date: Fri, 16 Jul 2021 18:23:55 -0300 Subject: [PATCH 21/42] updata adapter-netlify --- packages/adapter-netlify/index.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/adapter-netlify/index.js b/packages/adapter-netlify/index.js index fe2f48a6f64c..24f376be4ed3 100644 --- a/packages/adapter-netlify/index.js +++ b/packages/adapter-netlify/index.js @@ -17,6 +17,10 @@ export default function () { const files = fileURLToPath(new URL('./files', import.meta.url)); + if (utils.update_ignores({ patterns: [publish, functions] })) { + utils.log.minor('Ignore files updated'); + } + utils.log.minor('Generating serverless function...'); utils.copy(join(files, 'entry.js'), '.svelte-kit/netlify/entry.js'); From b4f3a1b46d130418c027a01ae276d100e4f6b5f4 Mon Sep 17 00:00:00 2001 From: JeanJPNM <61994401+JeanJPNM@users.noreply.github.com> Date: Fri, 16 Jul 2021 18:26:52 -0300 Subject: [PATCH 22/42] update adapter-begin --- packages/adapter-begin/index.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/packages/adapter-begin/index.js b/packages/adapter-begin/index.js index 2233cd33be7d..9e4b7d5f17da 100644 --- a/packages/adapter-begin/index.js +++ b/packages/adapter-begin/index.js @@ -33,6 +33,14 @@ export default function () { const static_directory = resolve(static_mount_point); const server_directory = resolve(join('src', 'shared')); + if ( + utils.update_ignores({ + patterns: [static_directory, lambda_directory, server_directory] + }) + ) { + utils.log.minor('Ignore files updated'); + } + utils.log.minor('Writing client application...'); utils.copy_static_files(static_directory); utils.copy_client_files(static_directory); From ebd3df67074da94acb9c65b6a80194e54fb616ec Mon Sep 17 00:00:00 2001 From: JeanJPNM <61994401+JeanJPNM@users.noreply.github.com> Date: Fri, 16 Jul 2021 19:37:28 -0300 Subject: [PATCH 23/42] add todo --- packages/kit/src/core/adapt/utils.js | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/kit/src/core/adapt/utils.js b/packages/kit/src/core/adapt/utils.js index ab0c7f5ac48d..719f49c791bc 100644 --- a/packages/kit/src/core/adapt/utils.js +++ b/packages/kit/src/core/adapt/utils.js @@ -55,6 +55,7 @@ export function get_utils({ cwd, config, build_data, log }) { const targets = ['.gitignore', '.prettierignore', '.eslintignore']; const title = '# Generated adapter output'; let changed = false; + // TODO: may be necessary to handle deletion of unused/old patterns for (const target of targets) { if (!fs.existsSync(target)) { if (!generate) continue; From 8d6a8838b63e219033529629a9343920963b7182 Mon Sep 17 00:00:00 2001 From: JeanJPNM <61994401+JeanJPNM@users.noreply.github.com> Date: Fri, 16 Jul 2021 21:52:45 -0300 Subject: [PATCH 24/42] put logging inside function --- packages/kit/src/core/adapt/utils.js | 8 +++++--- packages/kit/types/config.d.ts | 10 +++++++++- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/packages/kit/src/core/adapt/utils.js b/packages/kit/src/core/adapt/utils.js index 719f49c791bc..5d0413cf89b9 100644 --- a/packages/kit/src/core/adapt/utils.js +++ b/packages/kit/src/core/adapt/utils.js @@ -50,8 +50,8 @@ export function get_utils({ cwd, config, build_data, log }) { } }, - /** @param {{patterns: string[], generate?: boolean}} options */ - update_ignores({ patterns, generate = false }) { + /** @param {{patterns: string[], generate?: boolean, log?: boolean}} options */ + update_ignores({ patterns, generate = false, log = true }) { const targets = ['.gitignore', '.prettierignore', '.eslintignore']; const title = '# Generated adapter output'; let changed = false; @@ -101,7 +101,9 @@ export function get_utils({ cwd, config, build_data, log }) { fs.writeFileSync(target, lines.join('\n')); changed = true; } - return changed; + if (log && changed) { + this.log.minor('Ignore files updated'); + } } }; } diff --git a/packages/kit/types/config.d.ts b/packages/kit/types/config.d.ts index 207afbeea464..d813be37a553 100644 --- a/packages/kit/types/config.d.ts +++ b/packages/kit/types/config.d.ts @@ -9,7 +9,15 @@ export type AdapterUtils = { copy_server_files: (dest: string) => void; copy_static_files: (dest: string) => void; copy: (from: string, to: string, filter?: (basename: string) => boolean) => void; - update_ignores: ({ patterns, generate }: { patterns: string[]; generate?: boolean }) => boolean; + update_ignores: ({ + patterns, + generate, + log + }: { + patterns: string[]; + generate?: boolean; + log?: boolean; + }) => void; prerender: ({ all, dest, From 1b8bee272ee6b9ec21e83626091351a9273aaecc Mon Sep 17 00:00:00 2001 From: JeanJPNM <61994401+JeanJPNM@users.noreply.github.com> Date: Fri, 16 Jul 2021 21:53:04 -0300 Subject: [PATCH 25/42] update adapters --- packages/adapter-begin/index.js | 10 +++------- packages/adapter-cloudflare-workers/index.js | 4 +--- packages/adapter-netlify/index.js | 4 +--- packages/adapter-node/index.js | 4 +--- packages/adapter-static/index.js | 4 +--- packages/adapter-vercel/index.js | 5 ++--- 6 files changed, 9 insertions(+), 22 deletions(-) diff --git a/packages/adapter-begin/index.js b/packages/adapter-begin/index.js index 9e4b7d5f17da..7656952ae9af 100644 --- a/packages/adapter-begin/index.js +++ b/packages/adapter-begin/index.js @@ -33,13 +33,9 @@ export default function () { const static_directory = resolve(static_mount_point); const server_directory = resolve(join('src', 'shared')); - if ( - utils.update_ignores({ - patterns: [static_directory, lambda_directory, server_directory] - }) - ) { - utils.log.minor('Ignore files updated'); - } + utils.update_ignores({ + patterns: [static_directory, lambda_directory, server_directory] + }); utils.log.minor('Writing client application...'); utils.copy_static_files(static_directory); diff --git a/packages/adapter-cloudflare-workers/index.js b/packages/adapter-cloudflare-workers/index.js index 975d9b42a36b..ac52cf03fcc3 100644 --- a/packages/adapter-cloudflare-workers/index.js +++ b/packages/adapter-cloudflare-workers/index.js @@ -16,9 +16,7 @@ export default function () { const files = fileURLToPath(new URL('./files', import.meta.url)); - if (utils.update_ignores({ patterns: [bucket, entrypoint] })) { - utils.log.minor('Ignore files updated'); - } + utils.update_ignores({ patterns: [bucket, entrypoint] }); utils.rimraf(bucket); utils.rimraf(entrypoint); diff --git a/packages/adapter-netlify/index.js b/packages/adapter-netlify/index.js index 24f376be4ed3..218cb4214c45 100644 --- a/packages/adapter-netlify/index.js +++ b/packages/adapter-netlify/index.js @@ -17,9 +17,7 @@ export default function () { const files = fileURLToPath(new URL('./files', import.meta.url)); - if (utils.update_ignores({ patterns: [publish, functions] })) { - utils.log.minor('Ignore files updated'); - } + utils.update_ignores({ patterns: [publish, functions] }); utils.log.minor('Generating serverless function...'); utils.copy(join(files, 'entry.js'), '.svelte-kit/netlify/entry.js'); diff --git a/packages/adapter-node/index.js b/packages/adapter-node/index.js index 33888a559f32..631af7880d98 100644 --- a/packages/adapter-node/index.js +++ b/packages/adapter-node/index.js @@ -36,9 +36,7 @@ export default function ({ name: '@sveltejs/adapter-node', async adapt({ utils, config }) { - if (utils.update_ignores({ patterns: [out] })) { - utils.log.minor('Ignore files updated'); - } + utils.update_ignores({ patterns: [out] }); utils.log.minor('Copying assets'); const static_directory = join(out, 'assets'); utils.copy_client_files(static_directory); diff --git a/packages/adapter-static/index.js b/packages/adapter-static/index.js index 2e8c15852411..d684cba3dd48 100644 --- a/packages/adapter-static/index.js +++ b/packages/adapter-static/index.js @@ -11,9 +11,7 @@ export default function ({ pages = 'build', assets = pages, fallback } = {}) { name: '@sveltejs/adapter-static', async adapt({ utils }) { - if (utils.update_ignores({ patterns: [pages, assets] })) { - utils.log.minor('Ignore files updated'); - } + utils.update_ignores({ patterns: [pages, assets] }); utils.copy_static_files(assets); utils.copy_client_files(assets); diff --git a/packages/adapter-vercel/index.js b/packages/adapter-vercel/index.js index 1311ca98ea00..7beac2f6ca46 100644 --- a/packages/adapter-vercel/index.js +++ b/packages/adapter-vercel/index.js @@ -10,9 +10,8 @@ export default function () { async adapt({ utils }) { const dir = '.vercel_build_output'; - if (utils.update_ignores({ patterns: [dir] })) { - utils.log.minor('Ignore files updated'); - } + + utils.update_ignores({ patterns: [dir] }); utils.rimraf(dir); const files = fileURLToPath(new URL('./files', import.meta.url)); From 191e9c3d6b4a29c143cf071a78d191e7d6abe7bb Mon Sep 17 00:00:00 2001 From: JeanJPNM <61994401+JeanJPNM@users.noreply.github.com> Date: Sun, 18 Jul 2021 15:08:24 -0300 Subject: [PATCH 26/42] split lines with optional \r --- packages/kit/src/core/adapt/utils.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/kit/src/core/adapt/utils.js b/packages/kit/src/core/adapt/utils.js index 5d0413cf89b9..b3f4d199b5ed 100644 --- a/packages/kit/src/core/adapt/utils.js +++ b/packages/kit/src/core/adapt/utils.js @@ -61,9 +61,8 @@ export function get_utils({ cwd, config, build_data, log }) { if (!generate) continue; fs.writeFileSync(target, ''); } - const file = fs.readFileSync(target, { encoding: 'utf-8' }); - const lines = file.split('\n'); + const lines = file.split(/\r?\n/); const start_index = lines.indexOf(title); // append to file From ff7651907c7a5458e94a54fe0ab1820f4c041422 Mon Sep 17 00:00:00 2001 From: JeanJPNM <61994401+JeanJPNM@users.noreply.github.com> Date: Sun, 18 Jul 2021 18:45:37 -0300 Subject: [PATCH 27/42] check for patterns on the whole file --- packages/kit/src/core/adapt/utils.js | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/packages/kit/src/core/adapt/utils.js b/packages/kit/src/core/adapt/utils.js index b3f4d199b5ed..20f9e4496708 100644 --- a/packages/kit/src/core/adapt/utils.js +++ b/packages/kit/src/core/adapt/utils.js @@ -77,6 +77,14 @@ export function get_utils({ cwd, config, build_data, log }) { continue; } + const new_lines = new Set(patterns); + // remove repeated lines + for (const line of lines) { + // this will prevent commented ignores to be reinserted + new_lines.delete(line.replace(/#\s*/, '')); + } + if (new_lines.size === 0) continue; + let insertion_index = lines.length - 1; // find last empty line @@ -87,14 +95,6 @@ export function get_utils({ cwd, config, build_data, log }) { break; } } - const new_lines = new Set(patterns); - // remove repeated lines - for (let i = start_index; i <= insertion_index; i++) { - const line = lines[i]; - // this will prevent commented ignores to be reinserted - new_lines.delete(line.replace(/#\s*/, '')); - } - if (new_lines.size === 0) continue; lines.splice(insertion_index, 0, ...new_lines); fs.writeFileSync(target, lines.join('\n')); From 517b254b16674968c2a1ce36ee92d31c96ec6610 Mon Sep 17 00:00:00 2001 From: JeanJPNM <61994401+JeanJPNM@users.noreply.github.com> Date: Tue, 20 Jul 2021 16:35:33 -0300 Subject: [PATCH 28/42] minimal viable code --- packages/kit/src/core/adapt/utils.js | 49 +++++----------------------- packages/kit/types/config.d.ts | 10 +----- 2 files changed, 10 insertions(+), 49 deletions(-) diff --git a/packages/kit/src/core/adapt/utils.js b/packages/kit/src/core/adapt/utils.js index 20f9e4496708..ff626485cc87 100644 --- a/packages/kit/src/core/adapt/utils.js +++ b/packages/kit/src/core/adapt/utils.js @@ -50,33 +50,18 @@ export function get_utils({ cwd, config, build_data, log }) { } }, - /** @param {{patterns: string[], generate?: boolean, log?: boolean}} options */ - update_ignores({ patterns, generate = false, log = true }) { + /** @param {{patterns: string[], log?: boolean}} options */ + update_ignores({ patterns, log = true }) { const targets = ['.gitignore', '.prettierignore', '.eslintignore']; - const title = '# Generated adapter output'; - let changed = false; - // TODO: may be necessary to handle deletion of unused/old patterns for (const target of targets) { - if (!fs.existsSync(target)) { - if (!generate) continue; - fs.writeFileSync(target, ''); - } + if (!fs.existsSync(target)) continue; + const file = fs.readFileSync(target, { encoding: 'utf-8' }); const lines = file.split(/\r?\n/); - const start_index = lines.indexOf(title); - - // append to file - if (start_index === -1) { - let prefix = ''; - const last = lines[lines.length - 1]; - if (lines.length > 1) prefix += '\n'; - if (last.trim().length !== 0) prefix += '\n'; - - fs.appendFileSync(target, [`${prefix}${title}`, ...patterns].join('\n')); - changed = true; - continue; - } + // using new Set(...patterns, ...lines) can remove lines of the file + // that the user may not want and doesn't account for + // commented glob patterns const new_lines = new Set(patterns); // remove repeated lines for (const line of lines) { @@ -84,24 +69,8 @@ export function get_utils({ cwd, config, build_data, log }) { new_lines.delete(line.replace(/#\s*/, '')); } if (new_lines.size === 0) continue; - - let insertion_index = lines.length - 1; - - // find last empty line - for (let i = start_index; i < lines.length; i++) { - const line = lines[i]; - if (line.trim().length === 0) { - insertion_index = i; - break; - } - } - - lines.splice(insertion_index, 0, ...new_lines); - fs.writeFileSync(target, lines.join('\n')); - changed = true; - } - if (log && changed) { - this.log.minor('Ignore files updated'); + fs.writeFileSync(target, [...lines, ...new_lines].join('\n')); + if (log) this.log.success(`Updated ${target}`); } } }; diff --git a/packages/kit/types/config.d.ts b/packages/kit/types/config.d.ts index d813be37a553..5903e4c9cc0c 100644 --- a/packages/kit/types/config.d.ts +++ b/packages/kit/types/config.d.ts @@ -9,15 +9,7 @@ export type AdapterUtils = { copy_server_files: (dest: string) => void; copy_static_files: (dest: string) => void; copy: (from: string, to: string, filter?: (basename: string) => boolean) => void; - update_ignores: ({ - patterns, - generate, - log - }: { - patterns: string[]; - generate?: boolean; - log?: boolean; - }) => void; + update_ignores: ({ patterns, log }: { patterns: string[]; log?: boolean }) => void; prerender: ({ all, dest, From 235e6088784ca670ebc89f41edcfd9ec5c5ad911 Mon Sep 17 00:00:00 2001 From: JeanJPNM <61994401+JeanJPNM@users.noreply.github.com> Date: Wed, 21 Jul 2021 15:42:58 -0300 Subject: [PATCH 29/42] remove old comment --- packages/kit/src/core/adapt/utils.js | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/packages/kit/src/core/adapt/utils.js b/packages/kit/src/core/adapt/utils.js index ff626485cc87..f9271ab81535 100644 --- a/packages/kit/src/core/adapt/utils.js +++ b/packages/kit/src/core/adapt/utils.js @@ -58,11 +58,8 @@ export function get_utils({ cwd, config, build_data, log }) { const file = fs.readFileSync(target, { encoding: 'utf-8' }); const lines = file.split(/\r?\n/); - - // using new Set(...patterns, ...lines) can remove lines of the file - // that the user may not want and doesn't account for - // commented glob patterns const new_lines = new Set(patterns); + // remove repeated lines for (const line of lines) { // this will prevent commented ignores to be reinserted From 99fac6303d954be51e5e87b903384a1a01f7c914 Mon Sep 17 00:00:00 2001 From: JeanJPNM <61994401+JeanJPNM@users.noreply.github.com> Date: Wed, 21 Jul 2021 15:52:35 -0300 Subject: [PATCH 30/42] replace \n by EOL --- packages/kit/src/core/adapt/utils.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/kit/src/core/adapt/utils.js b/packages/kit/src/core/adapt/utils.js index f9271ab81535..70b402423bf8 100644 --- a/packages/kit/src/core/adapt/utils.js +++ b/packages/kit/src/core/adapt/utils.js @@ -2,6 +2,7 @@ import { SVELTE_KIT } from '../constants.js'; import { copy, rimraf, mkdirp } from '../filesystem/index.js'; import { prerender } from './prerender.js'; import fs from 'fs'; +import { EOL } from 'os'; /** * @@ -59,14 +60,13 @@ export function get_utils({ cwd, config, build_data, log }) { const file = fs.readFileSync(target, { encoding: 'utf-8' }); const lines = file.split(/\r?\n/); const new_lines = new Set(patterns); - // remove repeated lines for (const line of lines) { // this will prevent commented ignores to be reinserted new_lines.delete(line.replace(/#\s*/, '')); } if (new_lines.size === 0) continue; - fs.writeFileSync(target, [...lines, ...new_lines].join('\n')); + fs.writeFileSync(target, [...lines, ...new_lines].join(EOL)); if (log) this.log.success(`Updated ${target}`); } } From 14561a1d66c28790e499d8d935f907e47e8c7be7 Mon Sep 17 00:00:00 2001 From: JeanJPNM <61994401+JeanJPNM@users.noreply.github.com> Date: Wed, 21 Jul 2021 22:59:09 -0300 Subject: [PATCH 31/42] update docs --- documentation/docs/10-adapters.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/documentation/docs/10-adapters.md b/documentation/docs/10-adapters.md index e77f1842cd75..1e4a48a733ce 100644 --- a/documentation/docs/10-adapters.md +++ b/documentation/docs/10-adapters.md @@ -31,12 +31,12 @@ export default { }; ``` -Some adapters may modify your project's `.gitignore` to include their build output, in case you don't want those files ignored you can comment them out: +Some adapters may modify your project's `.gitignore`, `.prettierignore` and `.eslintignore` to include their build output. In case you don't want those patterns included you can comment them out: ```diff .svelte-kit .env -# Generated adapter output + - build + # build ``` From 5e57aae756531144b82fc3dd67c34c776f2363a3 Mon Sep 17 00:00:00 2001 From: JeanJPNM <61994401+JeanJPNM@users.noreply.github.com> Date: Thu, 22 Jul 2021 10:54:00 -0300 Subject: [PATCH 32/42] update adapter api doc --- documentation/docs/80-adapter-api.md | 1 + 1 file changed, 1 insertion(+) diff --git a/documentation/docs/80-adapter-api.md b/documentation/docs/80-adapter-api.md index 0f14a4d275b3..ffdc4421514a 100644 --- a/documentation/docs/80-adapter-api.md +++ b/documentation/docs/80-adapter-api.md @@ -26,6 +26,7 @@ The types for `Adapter` and its parameters are available in [types/config.d.ts]( Within the `adapt` method, there are a number of things that an adapter should do: - Clear out the build directory +- Call `utils.update_ignores` to ignore build output in existing `.gitignore`, `.eslintignore` and `.prettierignore` files at the root of the project - Output code that: - Calls `init` - Converts from the patform's request to a [SvelteKit request](#hooks-handle), calls `render`, and converts from a [SvelteKit response](#hooks-handle) to the platform's From 57ddbbb14d6ab11690d1f07ffe822f529a070a3b Mon Sep 17 00:00:00 2001 From: JeanJPNM <61994401+JeanJPNM@users.noreply.github.com> Date: Thu, 22 Jul 2021 22:59:54 -0300 Subject: [PATCH 33/42] clarify file location --- documentation/docs/80-adapter-api.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/documentation/docs/80-adapter-api.md b/documentation/docs/80-adapter-api.md index ffdc4421514a..5ea24a9062b5 100644 --- a/documentation/docs/80-adapter-api.md +++ b/documentation/docs/80-adapter-api.md @@ -26,7 +26,7 @@ The types for `Adapter` and its parameters are available in [types/config.d.ts]( Within the `adapt` method, there are a number of things that an adapter should do: - Clear out the build directory -- Call `utils.update_ignores` to ignore build output in existing `.gitignore`, `.eslintignore` and `.prettierignore` files at the root of the project +- Call `utils.update_ignores` to ignore build output in existing `.gitignore`, `.eslintignore` and `.prettierignore` files at the location of `svelte.config.js` - Output code that: - Calls `init` - Converts from the patform's request to a [SvelteKit request](#hooks-handle), calls `render`, and converts from a [SvelteKit response](#hooks-handle) to the platform's From f581003ce96765460ae8e7ffc18addcc310940a4 Mon Sep 17 00:00:00 2001 From: JeanJPNM <61994401+JeanJPNM@users.noreply.github.com> Date: Mon, 26 Jul 2021 15:37:51 -0300 Subject: [PATCH 34/42] undo adapter-begin update --- packages/adapter-begin/index.js | 4 ---- 1 file changed, 4 deletions(-) diff --git a/packages/adapter-begin/index.js b/packages/adapter-begin/index.js index 7656952ae9af..2233cd33be7d 100644 --- a/packages/adapter-begin/index.js +++ b/packages/adapter-begin/index.js @@ -33,10 +33,6 @@ export default function () { const static_directory = resolve(static_mount_point); const server_directory = resolve(join('src', 'shared')); - utils.update_ignores({ - patterns: [static_directory, lambda_directory, server_directory] - }); - utils.log.minor('Writing client application...'); utils.copy_static_files(static_directory); utils.copy_client_files(static_directory); From bd9613d5eebf620a6209ab5a69f68acc59176130 Mon Sep 17 00:00:00 2001 From: JeanJPNM <61994401+JeanJPNM@users.noreply.github.com> Date: Tue, 27 Jul 2021 21:07:29 -0300 Subject: [PATCH 35/42] check for file's eol --- packages/kit/src/core/adapt/utils.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/kit/src/core/adapt/utils.js b/packages/kit/src/core/adapt/utils.js index 70b402423bf8..109d18b40bdd 100644 --- a/packages/kit/src/core/adapt/utils.js +++ b/packages/kit/src/core/adapt/utils.js @@ -2,7 +2,6 @@ import { SVELTE_KIT } from '../constants.js'; import { copy, rimraf, mkdirp } from '../filesystem/index.js'; import { prerender } from './prerender.js'; import fs from 'fs'; -import { EOL } from 'os'; /** * @@ -58,7 +57,8 @@ export function get_utils({ cwd, config, build_data, log }) { if (!fs.existsSync(target)) continue; const file = fs.readFileSync(target, { encoding: 'utf-8' }); - const lines = file.split(/\r?\n/); + const eol = file.includes('\r\n') ? '\r\n' : '\n'; + const lines = file.split(eol); const new_lines = new Set(patterns); // remove repeated lines for (const line of lines) { @@ -66,7 +66,7 @@ export function get_utils({ cwd, config, build_data, log }) { new_lines.delete(line.replace(/#\s*/, '')); } if (new_lines.size === 0) continue; - fs.writeFileSync(target, [...lines, ...new_lines].join(EOL)); + fs.writeFileSync(target, [...lines, ...new_lines].join(eol)); if (log) this.log.success(`Updated ${target}`); } } From d74eeee4691b2122ba7453ee09b76277bedb323e Mon Sep 17 00:00:00 2001 From: JeanJPNM <61994401+JeanJPNM@users.noreply.github.com> Date: Tue, 27 Jul 2021 21:07:54 -0300 Subject: [PATCH 36/42] target only .gitignore --- packages/kit/src/core/adapt/utils.js | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/packages/kit/src/core/adapt/utils.js b/packages/kit/src/core/adapt/utils.js index 109d18b40bdd..a26c8164cc69 100644 --- a/packages/kit/src/core/adapt/utils.js +++ b/packages/kit/src/core/adapt/utils.js @@ -52,23 +52,21 @@ export function get_utils({ cwd, config, build_data, log }) { /** @param {{patterns: string[], log?: boolean}} options */ update_ignores({ patterns, log = true }) { - const targets = ['.gitignore', '.prettierignore', '.eslintignore']; - for (const target of targets) { - if (!fs.existsSync(target)) continue; + const target = '.gitignore'; + if (!fs.existsSync(target)) return; - const file = fs.readFileSync(target, { encoding: 'utf-8' }); - const eol = file.includes('\r\n') ? '\r\n' : '\n'; - const lines = file.split(eol); - const new_lines = new Set(patterns); - // remove repeated lines - for (const line of lines) { - // this will prevent commented ignores to be reinserted - new_lines.delete(line.replace(/#\s*/, '')); - } - if (new_lines.size === 0) continue; - fs.writeFileSync(target, [...lines, ...new_lines].join(eol)); - if (log) this.log.success(`Updated ${target}`); + const file = fs.readFileSync(target, { encoding: 'utf-8' }); + const eol = file.includes('\r\n') ? '\r\n' : '\n'; + const lines = file.split(eol); + const new_lines = new Set(patterns); + // remove repeated lines + for (const line of lines) { + // this will prevent commented ignores to be reinserted + new_lines.delete(line.replace(/#\s*/, '')); } + if (new_lines.size === 0) return; + fs.writeFileSync(target, [...lines, ...new_lines].join(eol)); + if (log) this.log.success(`Updated ${target}`); } }; } From 4403cb96dd3eec76b9ec3966930b19454ac99ee0 Mon Sep 17 00:00:00 2001 From: JeanJPNM <61994401+JeanJPNM@users.noreply.github.com> Date: Wed, 28 Jul 2021 13:20:44 -0300 Subject: [PATCH 37/42] change ignore path to .gitignore for prettier --- packages/create-svelte/shared/+eslint+prettier/package.json | 4 ++-- packages/create-svelte/shared/+prettier/.prettierignore | 4 ---- packages/create-svelte/shared/-eslint+prettier/package.json | 4 ++-- 3 files changed, 4 insertions(+), 8 deletions(-) delete mode 100644 packages/create-svelte/shared/+prettier/.prettierignore diff --git a/packages/create-svelte/shared/+eslint+prettier/package.json b/packages/create-svelte/shared/+eslint+prettier/package.json index ac3aca10acf1..8cb0595e99da 100644 --- a/packages/create-svelte/shared/+eslint+prettier/package.json +++ b/packages/create-svelte/shared/+eslint+prettier/package.json @@ -3,7 +3,7 @@ "eslint-config-prettier": "^8.1.0" }, "scripts": { - "lint": "prettier --check --plugin-search-dir=. . && eslint --ignore-path .gitignore .", - "format": "prettier --write --plugin-search-dir=. ." + "lint": "prettier --ignore-path .gitignore --check --plugin-search-dir=. . && eslint --ignore-path .gitignore .", + "format": "prettier --ignore-path .gitignore --write --plugin-search-dir=. ." } } diff --git a/packages/create-svelte/shared/+prettier/.prettierignore b/packages/create-svelte/shared/+prettier/.prettierignore deleted file mode 100644 index d26fa1cff1b9..000000000000 --- a/packages/create-svelte/shared/+prettier/.prettierignore +++ /dev/null @@ -1,4 +0,0 @@ -.svelte-kit/** -static/** -build/** -node_modules/** diff --git a/packages/create-svelte/shared/-eslint+prettier/package.json b/packages/create-svelte/shared/-eslint+prettier/package.json index e9103a7e238c..af5326c65c5a 100644 --- a/packages/create-svelte/shared/-eslint+prettier/package.json +++ b/packages/create-svelte/shared/-eslint+prettier/package.json @@ -1,6 +1,6 @@ { "scripts": { - "lint": "prettier --check --plugin-search-dir=. .", - "format": "prettier --write --plugin-search-dir=. ." + "lint": "prettier --ignore-path .gitignore --check --plugin-search-dir=. .", + "format": "prettier --ignore-path .gitignore --write --plugin-search-dir=. ." } } From e587a921049463fbdf7cf31fc63079c3d1c3c15b Mon Sep 17 00:00:00 2001 From: JeanJPNM <61994401+JeanJPNM@users.noreply.github.com> Date: Wed, 28 Jul 2021 15:52:29 -0300 Subject: [PATCH 38/42] Update documentation/docs/80-adapter-api.md Co-authored-by: Ben McCann <322311+benmccann@users.noreply.github.com> --- documentation/docs/80-adapter-api.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/documentation/docs/80-adapter-api.md b/documentation/docs/80-adapter-api.md index 5ea24a9062b5..1b67b66e6ec1 100644 --- a/documentation/docs/80-adapter-api.md +++ b/documentation/docs/80-adapter-api.md @@ -26,7 +26,7 @@ The types for `Adapter` and its parameters are available in [types/config.d.ts]( Within the `adapt` method, there are a number of things that an adapter should do: - Clear out the build directory -- Call `utils.update_ignores` to ignore build output in existing `.gitignore`, `.eslintignore` and `.prettierignore` files at the location of `svelte.config.js` +- Call `utils.update_ignores` to ignore build output in existing `.gitignore` files at the location of `svelte.config.js` - Output code that: - Calls `init` - Converts from the patform's request to a [SvelteKit request](#hooks-handle), calls `render`, and converts from a [SvelteKit response](#hooks-handle) to the platform's From 4e9c14658ddf517150b5cc70efeb89e55ca9e151 Mon Sep 17 00:00:00 2001 From: JeanJPNM <61994401+JeanJPNM@users.noreply.github.com> Date: Wed, 28 Jul 2021 16:02:20 -0300 Subject: [PATCH 39/42] update `.gitignore` files on test apps --- packages/adapter-static/test/apps/prerendered/.gitignore | 2 ++ packages/adapter-static/test/apps/spa/.gitignore | 2 ++ 2 files changed, 4 insertions(+) diff --git a/packages/adapter-static/test/apps/prerendered/.gitignore b/packages/adapter-static/test/apps/prerendered/.gitignore index 0a4623184983..082e0bbcf9c2 100644 --- a/packages/adapter-static/test/apps/prerendered/.gitignore +++ b/packages/adapter-static/test/apps/prerendered/.gitignore @@ -3,3 +3,5 @@ node_modules /.svelte-kit /build /functions + +build \ No newline at end of file diff --git a/packages/adapter-static/test/apps/spa/.gitignore b/packages/adapter-static/test/apps/spa/.gitignore index 0a4623184983..082e0bbcf9c2 100644 --- a/packages/adapter-static/test/apps/spa/.gitignore +++ b/packages/adapter-static/test/apps/spa/.gitignore @@ -3,3 +3,5 @@ node_modules /.svelte-kit /build /functions + +build \ No newline at end of file From cf903e5b5a4cedfe8567113ccc85f20d5f212b2d Mon Sep 17 00:00:00 2001 From: JeanJPNM <61994401+JeanJPNM@users.noreply.github.com> Date: Wed, 28 Jul 2021 16:04:39 -0300 Subject: [PATCH 40/42] update adapter section of documentation --- documentation/docs/10-adapters.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/documentation/docs/10-adapters.md b/documentation/docs/10-adapters.md index 1e4a48a733ce..1514ea3c5d34 100644 --- a/documentation/docs/10-adapters.md +++ b/documentation/docs/10-adapters.md @@ -31,7 +31,7 @@ export default { }; ``` -Some adapters may modify your project's `.gitignore`, `.prettierignore` and `.eslintignore` to include their build output. In case you don't want those patterns included you can comment them out: +Some adapters may modify your project's `.gitignore` to include their build output. In case you don't want those patterns included you can comment them out: ```diff .svelte-kit From 50cb7d84eaa375f96dd1db1a7de32fd35b7712ba Mon Sep 17 00:00:00 2001 From: JeanJPNM <61994401+JeanJPNM@users.noreply.github.com> Date: Wed, 28 Jul 2021 16:12:12 -0300 Subject: [PATCH 41/42] update changeset --- .changeset/big-countries-pump.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/big-countries-pump.md b/.changeset/big-countries-pump.md index 8449c8abde9b..3a9fb9a9086b 100644 --- a/.changeset/big-countries-pump.md +++ b/.changeset/big-countries-pump.md @@ -2,4 +2,4 @@ '@sveltejs/kit': patch --- -Add public API to let adapters update .gitignore and files alike +Add public API to let adapters update .gitignore From 445b99207f92b1fa60e0e453f803f16fa5f8b2ee Mon Sep 17 00:00:00 2001 From: JeanJPNM <61994401+JeanJPNM@users.noreply.github.com> Date: Wed, 28 Jul 2021 18:23:23 -0300 Subject: [PATCH 42/42] add end of line on test apps `.gitignore` --- packages/adapter-static/test/apps/prerendered/.gitignore | 2 +- packages/adapter-static/test/apps/spa/.gitignore | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/adapter-static/test/apps/prerendered/.gitignore b/packages/adapter-static/test/apps/prerendered/.gitignore index 082e0bbcf9c2..06f3fb94e666 100644 --- a/packages/adapter-static/test/apps/prerendered/.gitignore +++ b/packages/adapter-static/test/apps/prerendered/.gitignore @@ -4,4 +4,4 @@ node_modules /build /functions -build \ No newline at end of file +build diff --git a/packages/adapter-static/test/apps/spa/.gitignore b/packages/adapter-static/test/apps/spa/.gitignore index 082e0bbcf9c2..06f3fb94e666 100644 --- a/packages/adapter-static/test/apps/spa/.gitignore +++ b/packages/adapter-static/test/apps/spa/.gitignore @@ -4,4 +4,4 @@ node_modules /build /functions -build \ No newline at end of file +build