Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature/add custom dir for output bundle #98

Merged
merged 8 commits into from Apr 28, 2019
Merged

Feature/add custom dir for output bundle #98

merged 8 commits into from Apr 28, 2019

Conversation

@gosolivs
Copy link
Contributor

@gosolivs gosolivs commented Apr 28, 2019

No description provided.

@ai
Copy link
Owner

@ai ai commented Apr 28, 2019

  1. Let's name getSize option as output.
  2. You need to add CLI and getSize tests.

index.js Outdated
@@ -179,6 +187,7 @@ function getLoadingTime (size) {
* @param {boolean} [opts.gzip=true] Compress files by gzip.
* @param {string} [opts.config] A path to custom webpack config.
* @param {string} [opts.bundle] Bundle name for Analyzer mode.
* @param {string} [opts.directory] A path for output bundle.
Copy link
Contributor Author

@gosolivs gosolivs Apr 28, 2019

@ai это не покрывает 1-ый пункт?

Copy link
Owner

@ai ai Apr 28, 2019

Ага, только переименуй directory в output

@gosolivs
Copy link
Contributor Author

@gosolivs gosolivs commented Apr 28, 2019

@ai абсолютные пути нужно обрабатывать?

@ai
Copy link
Owner

@ai ai commented Apr 28, 2019

абсолютные пути нужно обрабатывать?

Что ты имеешь в виду? Система должна работать как с относительными путями так и с абсолютными (но вроде спец. кода не нужно).

@gosolivs
Copy link
Contributor Author

@gosolivs gosolivs commented Apr 28, 2019

Проверка является ли путь абсолютным, если да, то по нему положить, если нет, то с конкатинировать с process.cwd()
Добавил

@gosolivs
Copy link
Contributor Author

@gosolivs gosolivs commented Apr 28, 2019

Подскажи, как тестировать данный параметр?
Проверять записан ли файл, а после его удалять?

@ai
Copy link
Owner

@ai ai commented Apr 28, 2019

Проверять записан ли файл, а после его удалять?

Ага. Пиши внутри os.tmpdir

index.js Outdated
@@ -29,6 +29,18 @@ function projectName (opts, files) {
}
}

function getPathBundle (opts) {
Copy link
Owner

@ai ai Apr 28, 2019

get path bundle — не корректная фраза на английском. getBundlePath

@@ -29,6 +29,18 @@ function projectName (opts, files) {
}
}

function getPathBundle (opts) {
if (opts.output) {
if (path.isAbsolute(opts.output)) {
Copy link
Owner

@ai ai Apr 28, 2019

Тут нужно будет протестировать и абсолютный и относительный пути (не забудь после написания тестов проверить, что это было нужно, может вебпак и сам может работать с относительными путями)

Copy link
Contributor Author

@gosolivs gosolivs Apr 28, 2019

Проверил, вебпак выбрасывает ошибку

@gosolivs
Copy link
Contributor Author

@gosolivs gosolivs commented Apr 28, 2019

Добавил тест в  cli.test.js
Подскажи, как лучше написать тест для index.test.js?

@ai
Copy link
Owner

@ai ai commented Apr 28, 2019

Подскажи, как лучше написать тест для index.test.js?

Так же. Вызываешь getSize(), проверяешь создался ли файл. Удаляешь его в конце.

@gosolivs
Copy link
Contributor Author

@gosolivs gosolivs commented Apr 28, 2019

Ага. Добавил.

output: testDir
})

expect(fs.existsSync(join(testDir, 'index.js'))).toEqual(true)
Copy link
Owner

@ai ai Apr 28, 2019

Ты забыл удалить файл

Copy link
Contributor Author

@gosolivs gosolivs Apr 28, 2019

Error: Cannot delete files/folders outside the current working directory. Can be overridden with the `force` option.
MacOS не дает это сделать. Думаю linux-like так же будет

Copy link
Owner

@ai ai Apr 28, 2019

А почему нельзя передать в del force аргумент, как указано в ошибке?

Copy link
Contributor Author

@gosolivs gosolivs Apr 28, 2019

Или force добавить?

Copy link
Owner

@ai ai Apr 28, 2019

Ну да del(dir, { force: true })

test/cli.test.js Outdated
@@ -56,6 +58,7 @@ afterAll(async () => {
await del(join(__dirname, 'fixtures/webpack-multipe-entry-points/dist'))
await del(join(__dirname, 'fixtures/webpack-config/dist'))
await del(join(__dirname, '../dist'))
await del(join(__dirname, 'build'))
Copy link
Owner

@ai ai Apr 28, 2019

Это надо в after вместо afterAll (лучше перенести все в after.

Copy link
Contributor Author

@gosolivs gosolivs Apr 28, 2019

Не могу найти такой метод :(

Copy link
Owner

@ai ai Apr 28, 2019

На строчке 57 переименуй afterAll в after. Сейчас файлы удаляются в конце всех тестов. В итоге save output bundle to absolute path влияет на save output bundle to relative path (второй может не работать, но так как файл останется после первого, то тест пройдёт). after же вызывает функцию после каждого теста, гарантируя чистую среду.

Copy link
Contributor Author

@gosolivs gosolivs Apr 28, 2019

Может удаление в тест занести?

Copy link
Owner

@ai ai Apr 28, 2019

Если тест не пройдёт, то файл не удалиться

Copy link
Contributor Author

@gosolivs gosolivs Apr 28, 2019

Добавил в сам тест и в afterAll. Ибо увеличиваем время afterEach с удаление файла, которого еще нет

test/cli.test.js Outdated
{ cwd: fixture('defaults') }
)

expect(fs.existsSync(join(testDir, 'index.js'))).toEqual(true)
Copy link
Owner

@ai ai Apr 28, 2019

/tmp/index.js — это слишком простое имя. В ОС кто-то другой мог такой файл создать. Давай хоть join(testDir, 'size-limit-bundle.js')

Copy link
Contributor Author

@gosolivs gosolivs Apr 28, 2019

Я уже добавил имя директории, чтобы ее удалять а не 2 файла в отдельности. Ибо флаг "без gzip" не передаю

Copy link
Owner

@ai ai Apr 28, 2019

os.tmpdir() возвращает просто /tmp (то есть глобальную папку, она не создаёт какую-то специальную)

Copy link
Contributor Author

@gosolivs gosolivs Apr 28, 2019

Добавил папку и проверяю ее, а не файл

test/cli.test.js Outdated

it('save output bundle to relative path', async () => {
let { code } = await run(
['--save-bundle', '../../build'],
Copy link
Owner

@ai ai Apr 28, 2019

Тут тоже лучше создавать файл в join(os.tmpdir(), 'size-limit-cli-bundle.js') а не записывать в репо

Copy link
Contributor Author

@gosolivs gosolivs Apr 28, 2019

Тогда смысл этого теста, если проверяем абсолютный путь.
После каждого теста папка затирается. И можно в gitignore занести

Copy link
Owner

@ai ai Apr 28, 2019

А, точно. Забыл что это относительный пути

Copy link
Owner

@ai ai Apr 28, 2019

Да, папку надо в .gitignore (и назвать более понятно типа output-test), чтобы если тесты упали ддо вызыва after()

Copy link
Contributor Author

@gosolivs gosolivs Apr 28, 2019

Добавил в .gitignore

@gosolivs
Copy link
Contributor Author

@gosolivs gosolivs commented Apr 28, 2019

Еще что-то нужно добавлять/править?

@ai ai merged commit 0a7ae6e into ai:master Apr 28, 2019
1 check passed
@ai
Copy link
Owner

@ai ai commented Apr 28, 2019

Released in 1.3

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Linked issues

Successfully merging this pull request may close these issues.

None yet

2 participants