Копия файла Node js
Обновлено: 21.11.2024
Работа с файлами так же распространена как в целях разработки, так и в целях, не связанных с разработкой. При повседневном использовании компьютера пользователь, скорее всего, будет читать и записывать данные в файлы в различных каталогах для выполнения таких задач, как сохранение загруженного файла или доступ к данным для использования в другом приложении. Точно так же серверной программе или инструменту интерфейса командной строки (CLI) может потребоваться записать загруженные данные в файл, чтобы сохранить их, или приложению, интенсивно использующему данные, может потребоваться экспортировать в JSON, CSV или Excel. форматы. Эти программы должны взаимодействовать с файловой системой операционной системы, в которой они работают.
С Node.js вы можете программно манипулировать файлами с помощью встроенного модуля fs. Название является сокращением от «файловая система», и модуль содержит все функции, необходимые для чтения, записи и удаления файлов на локальном компьютере. Этот уникальный аспект Node.js делает JavaScript удобным языком для программирования серверных приложений и инструментов CLI.
В этой статье вы будете использовать модуль fs для чтения файла, созданного с помощью командной строки, создания нового файла и записи в него, удаления созданного файла и перемещения первого файла в другую папку. Модуль fs поддерживает взаимодействие с файлами синхронно, асинхронно или через потоки; в этом руководстве основное внимание будет уделено тому, как использовать асинхронный API на основе Promise — наиболее часто используемый метод для разработчиков Node.js.
Предпосылки
Чтобы получить доступ к модулю fs и следовать инструкциям, на вашем компьютере должен быть установлен Node.js. В этом руководстве используется Node.js версии 10.22.0. Чтобы установить Node.js в macOS или Ubuntu 18.04, выполните действия, описанные в разделе «Установка Node.js и создание локальной среды разработки в macOS» или в разделе «Установка с помощью PPA» в разделе «Как установить Node.js в Ubuntu 18.04».
В этой статье для работы с файлами используются промисы JavaScript, особенно с синтаксисом async/await. Если вы не знакомы с промисами, синтаксисом async/await или асинхронным программированием, ознакомьтесь с нашим руководством «Как писать асинхронный код в Node.js».
Шаг 1 — Чтение файлов с помощью readFile()
На этом шаге вы напишете программу для чтения файлов в Node.js. Для этого вам нужно импортировать модуль fs, стандартный модуль Node.js для работы с файлами, а затем использовать функцию модуля readFile(). Ваша программа прочитает файл, сохранит его содержимое в переменной, а затем выведет его содержимое на консоль.
Первым шагом будет настройка среды кодирования для этого задания и действий, описанных в последующих разделах.
Создайте папку для хранения кода. В вашем терминале создайте папку с именем node-files :
Измените рабочий каталог на только что созданную папку с помощью команды cd:
В этой папке вы создадите два файла. Первый файл будет новым файлом с содержимым, которое ваша программа будет читать позже. Второй файл будет модулем Node.js, который читает файл.
Создайте файл Greetings.txt с помощью следующей команды:
Команда echo выводит свой строковый аргумент на терминал. Вы используете > для перенаправления вывода эха в новый файл Greetings.txt .
Теперь создайте и откройте readFile.js в любом текстовом редакторе. В этом руководстве используется текстовый редактор терминала nano. Вы можете открыть этот файл с помощью nano следующим образом:
Код этого файла можно разбить на три части. Во-первых, вам нужно импортировать модуль Node.js, который позволяет вашей программе работать с файлами. В текстовом редакторе введите этот код:
Как упоминалось ранее, вы используете модуль fs для взаимодействия с файловой системой. Однако обратите внимание, что вы импортируете часть модуля .promises.
Когда модуль fs был впервые создан, основным способом написания асинхронного кода в Node.js были обратные вызовы. По мере того, как популярность промисов росла, команда Node.js работала над их поддержкой в модуле fs из коробки. В Node.js версии 10 они создали объект promises в модуле fs, который использует промисы, в то время как основной модуль fs продолжает предоставлять функции, использующие обратные вызовы. В этой программе вы импортируете обещанную версию модуля.
После импорта модуля вы можете создать асинхронную функцию для чтения файла. Асинхронные функции начинаются с ключевого слова async. С помощью асинхронной функции вы можете разрешать промисы с помощью ключевого слова await вместо связывания промисов с методом .then().
Создайте новую функцию readFile(), которая принимает один аргумент — строку с именем filePath . Ваша функция readFile() будет использовать модуль fs для загрузки файла в переменную с использованием синтаксиса async/await.
Введите следующий выделенный код:
Вы определяете функцию с помощью ключевого слова async, чтобы впоследствии можно было использовать соответствующее ключевое слово await. Чтобы зафиксировать ошибки в вашей асинхронной операции чтения файла, вы заключаете вызов fs.readFile() с попыткой. поймать блок.В разделе try вы загружаете файл в переменную данных с помощью функции fs.readFile(). Единственным обязательным аргументом для этой функции является путь к файлу, который задается в виде строки.
По умолчанию функция fs.readFile() возвращает объект буфера. Буферный объект может хранить файлы любого типа. Когда вы регистрируете содержимое файла, вы конвертируете эти байты в текст с помощью метода toString() объекта буфера.
Если обнаружена ошибка, обычно если файл не найден или у программы нет разрешения на чтение файла, вы регистрируете полученную ошибку в консоли.
Наконец, вызовите функцию в файле Greetings.txt со следующей выделенной строкой:
Обязательно сохраните содержимое. С nano вы можете сохранить и выйти, нажав CTRL+X .
Теперь ваша программа прочитает созданный ранее файл Greetings.txt и запишет его содержимое в терминал. Подтвердите это, выполнив свой модуль с узлом:
Вы получите следующий вывод:
Теперь вы прочитали файл с помощью функции readFile() модуля fs, используя синтаксис async/await.
Примечание. В некоторых более ранних версиях Node.js вы получите следующее предупреждение при использовании модуля fs:
Объект promises модуля fs был введен в Node.js версии 10, поэтому в некоторых более ранних версиях этот модуль по-прежнему называется экспериментальным. Это предупреждение было удалено, когда API стал стабильным в версии 12.6.
Теперь, когда вы прочитали файл с помощью модуля fs, вам нужно создать файл и записать в него текст.
Шаг 2 — Запись файлов с помощью writeFile()
На этом этапе вы будете записывать файлы с помощью функции writeFile() модуля fs. Вы создадите CSV-файл в Node.js, в котором будет отслеживаться счет за продукты. При первой записи файла вы создадите файл и добавите заголовки. Во второй раз вы добавите данные в файл.
Откройте новый файл в текстовом редакторе:
Начните свой код с импорта модуля fs:
Вы продолжите использовать синтаксис async/await при создании двух функций. Первой функцией будет создание CSV-файла. Второй функцией будет добавление данных в файл CSV.
В текстовом редакторе введите следующий выделенный код:
Эта асинхронная функция сначала создает переменную csvHeaders, содержащую заголовки столбцов CSV-файла. Затем вы используете функцию writeFile() модуля fs для создания файла и записи в него данных. Первый аргумент — это путь к файлу. Поскольку вы указали только имя файла, Node.js создаст файл в том же каталоге, в котором вы выполняете код. Второй аргумент — это данные, которые вы записываете, в данном случае это переменная csvHeaders.
Далее создайте новую функцию для добавления товаров в список покупок. Добавьте в текстовый редактор следующую выделенную функцию:
Асинхронная функция addGroceryItem() принимает три аргумента: название продукта, количество, которое вы покупаете, и цену за единицу. Эти аргументы используются с синтаксисом литерала шаблона для формирования переменной csvLine, которая является данными, которые вы записываете в файл.
Затем вы используете метод writeFile() так же, как и в функции openFile(). Однако на этот раз у вас есть третий аргумент: объект JavaScript. Этот объект имеет ключ флага со значением a . Флаги сообщают Node.js, как взаимодействовать с файлом в системе. Используя флаг a , вы говорите Node.js добавлять в файл, а не перезаписывать его. Если вы не укажете флаг, по умолчанию он будет w , который создает новый файл, если он не существует, или перезаписывает файл, если он уже существует. Вы можете узнать больше о флагах файловой системы в документации Node.js.
Чтобы завершить сценарий, используйте эти функции. Добавьте следующие выделенные строки в конец файла:
Для вызова функций сначала нужно создать функцию-оболочку с асинхронной функцией. Поскольку ключевое слово await нельзя использовать в глобальной области видимости на момент написания этого руководства, вы должны обернуть асинхронные функции в асинхронную функцию. Обратите внимание, что эта функция является анонимной, то есть у нее нет имени для идентификации.
Ваши функции openFile() и addGroceryItem() являются асинхронными функциями. Без включения этих вызовов в другую функцию вы не можете гарантировать порядок содержимого. Созданная вами оболочка определяется ключевым словом async. Внутри этой функции вы упорядочиваете вызовы функций с помощью ключевого слова await.
Наконец, определение асинхронной функции заключено в круглые скобки. Они сообщают JavaScript, что код внутри них является функциональным выражением. Скобки в конце функции и перед точкой с запятой используются для немедленного вызова функции. Это называется выражением немедленно вызываемой функции (IIFE). Используя IIFE с анонимной функцией, вы можете проверить, что ваш код создает файл CSV с тремя строками: заголовки столбцов, строка для яиц и последняя строка для nutella .
Сохраните и выйдите из nano, нажав CTRL+X .
Теперь запустите свой код с помощью команды node:
Вывода не будет. Однако в вашем текущем каталоге будет существовать новый файл.
Используйте команду cat для отображения содержимого groceries.csv:
Вы получите следующий вывод:
Ваш вызов openFile() создал новый файл и добавил заголовки столбцов для вашего CSV. Последующие вызовы addGroceryItem() добавили ваши две строки данных.
С помощью функции writeFile() вы можете создавать и редактировать файлы. Затем вы удалите файлы. Это обычная операция, когда у вас есть временные файлы или вам нужно освободить место на жестком диске.
Шаг 3 — Удаление файлов с помощью unlink()
На этом шаге вы удалите файлы с помощью функции unlink() в модуле fs. Вы напишете сценарий Node.js для удаления файла groceries.csv, созданного в предыдущем разделе.
В терминале создайте новый файл для этого модуля Node.js:
Теперь вы напишете код, создающий асинхронную функцию deleteFile(). Эта функция примет путь к файлу в качестве аргумента, передав его функции unlink() для удаления из вашей файловой системы.
В текстовом редакторе напишите следующий код:
Функция unlink() принимает один аргумент: путь к файлу, который вы хотите удалить.
Предупреждение. Когда вы удаляете файл с помощью функции unlink(), он не отправляется в вашу корзину, а навсегда удаляется из вашей файловой системы. Это действие необратимо, поэтому перед выполнением кода убедитесь, что вы хотите удалить файл.
Выйдите из nano , убедившись, что вы сохранили содержимое файла, нажав CTRL+X .
Теперь запустите программу. Запустите следующую команду в своем терминале:
Вы получите следующий вывод:
Чтобы подтвердить, что файл больше не существует, используйте команду ls в текущем каталоге:
Эта команда отобразит следующие файлы:
Теперь вы подтвердили, что ваш файл был удален с помощью функции unlink().
Вы научились читать, писать, редактировать и удалять файлы. В следующем разделе используется функция для перемещения файлов в разные папки. Изучив эту функцию, вы сможете выполнять самые важные задачи по управлению файлами в Node.js.
Шаг 4 — Перемещение файлов с помощью rename()
Папки используются для организации файлов, поэтому возможность программного перемещения файлов из одной папки в другую упрощает управление файлами. Вы можете перемещать файлы в Node.js с помощью функции rename(). На этом шаге вы переместите копию файла Greetings.txt в новую папку.
Прежде чем вы сможете написать свой модуль Node.js, вам нужно настроить несколько вещей. Начните с создания папки, в которую вы будете перемещать файл. В терминале создайте папку test-data в текущем каталоге:
Теперь скопируйте файл Greetings.txt, который использовался на первом этапе, с помощью команды cp:
Завершите настройку, открыв файл JavaScript, содержащий ваш код:
В модуле Node.js вы создадите функцию с именем moveFile(), которая вызывает функцию rename(). При использовании функции rename() вам необходимо указать путь к исходному файлу и путь к месту назначения. В этом примере вы будете использовать функцию moveFile() для перемещения файла Greetings-2.txt в папку test-data. Вы также измените его название на salutations.txt .
Введите следующий код в текстовом редакторе:
Как упоминалось ранее, функция rename() принимает два аргумента: путь к исходному файлу и путь к файлу назначения. Эта функция может перемещать файлы в другие папки, переименовывать файл в его текущем каталоге или перемещать и переименовывать одновременно. В своем коде вы перемещаете и переименовываете свой файл.
Сохраните и выйдите из nano, нажав CTRL+X .
Затем выполните эту программу с узлом . Введите эту команду, чтобы запустить программу:
Вы получите следующий вывод:
Чтобы подтвердить, что файл больше не существует в вашем текущем каталоге, вы можете использовать команду ls:
Эта команда отобразит эти файлы и папку:
Теперь вы можете использовать ls для вывода списка файлов в подпапке test-data:
Ваш перемещенный файл появится в результатах:
Теперь вы использовали функцию rename() для перемещения файла из текущего каталога во вложенную папку. Вы также переименовали файл с помощью того же вызова функции.
Заключение
В этой статье вы узнали о различных функциях для управления файлами с помощью Node.js. Сначала вы загрузили содержимое файла с помощью readFile(). Затем вы создали новые файлы и добавили данные в существующий файл с помощью функции writeFile(). Вы безвозвратно удалили файл с помощью функции unlink(), а затем переместили и переименовали файл с помощью rename().
Программная работа с файлами — важная функция Node.js. Программам может потребоваться вывести файлы для использования пользователем или сохранить данные для приложения, которое не всегда запущено.С помощью функций модуля fs разработчики могут контролировать использование файлов в наших программах Node.js.
Чтобы узнать больше о модуле fs, прочтите документацию по Node.js. Если вы хотите продолжить изучение Node.js, вы можете вернуться к серии статей How To Code in Node.js или просмотреть проекты и настройки программирования на нашей тематической странице Node.
Хотите узнать больше? Присоединяйтесь к сообществу DigitalOcean!
Присоединяйтесь к нашему сообществу DigitalOcean, насчитывающему более миллиона разработчиков, бесплатно! Получайте помощь и делитесь знаниями в нашем разделе "Вопросы и ответы", находите руководства и инструменты, которые помогут вам расти как разработчику и масштабировать свой проект или бизнес, а также подписывайтесь на интересующие вас темы.
Как я и обещал вам всем, я вернулся с еще одним методом из модуля файловой системы, то есть как копировать файлы с помощью Nodejs. И, как я всегда говорю, модуль fs или файловой системы действительно обширен и является одним из самых важных встроенных модулей в Node.js.
В этом руководстве я расскажу, как копировать файлы с помощью Node.js. Ну, есть много вариантов использования этой функции. Вы можете столкнуться с ситуациями, когда вам нужно скопировать данные из файла и использовать их позже в коде.
Однако копирование файла в Node.js — это не то же самое, что чтение файла и запись его содержимого в другой файл.
Все функции или методы модуля fs имеют свои асинхронные и синхронные формы, которые мы рассмотрим в этой статье.
В асинхронной форме последний аргумент всегда является обратным вызовом завершения. Аргументы, передаваемые обратному вызову, зависят от метода. Однако первый аргумент всегда зарезервирован для ошибки/исключения.
Если в этом случае операция не завершится, первый аргумент будет неопределенным, в противном случае он будет нулевым.
В синхронной версии метода любая ошибка выдается немедленно. Для обработки ошибок в синхронных формах мы всегда можем использовать try/catch или просто позволить им всплывать.
Оглавление
Асинхронное копирование файлов в Node.js
fs.copyFile(источник, пункт назначения[, режим], обратный вызов)
Метод fs.copyFile() помогает нам асинхронно копировать файлы с помощью Nodejs из источника в место назначения. По умолчанию Node.js перезаписывает файл, если он уже существует, в указанном месте назначения.
Параметр/аргумент режима, который принимает этот метод, является необязательным. Однако его можно использовать для изменения режима копирования файлов.
Ниже перечислены параметры, которые принимает файл fs.copyFile:
- src — строка, буфер или URL-адрес. Представляет имя исходного файла для копирования
- dest — строка, буфер или URL. Представляет имя целевого файла для создания
- mode — необязательное целое число. Представляет модификаторы операции копирования. По умолчанию = 0. Подробнее о предопределенных константах читайте здесь.
- обратный вызов — функция, которая будет выполняться при вызове метода.
- err — ошибка, которая выдается в случае исключения.
Чтобы научиться копировать файлы с помощью Nodejs, мы должны сначала импортировать наш модуль fs, используя модуль require.
Приведем пример, чтобы лучше понять функцию:
// Печать текущего имени файла перед копированием
console.log("Содержимое файла sample_file:",
fs.readFileSync("sample_file.txt", "utf8")); р>
// Копирование sample_file.txt под другим именем
fs.copyFile("sample_file.txt", "async_copied_file.txt", (err) => if (err) console.log("Ой! Произошла ошибка:", err);
>
else // Печать текущего имени файла после выполнения функции
console.log("Содержимое файла async_copied_file:",
fs .readFileSync("async_copied_file.txt", "utf8"));
>
>);
Содержимое файла sample_file: это образец файла для операции асинхронного копирования.
Содержимое файла async_copied_file: это образец файла для операции асинхронного копирования.
Таким образом, вы можете асинхронно копировать файлы из любого источника в любое место назначения. Не понимаете, что делает fs.readFileSync()? Прочтите мой пост о чтении файлов в Node.js.
Синхронное копирование файлов в Node.js
fs.copyFileSync(источник, пункт назначения[, режим])
Метод fs.copyFileSync() помогает нам синхронно копировать файлы с Nodejs из источника в место назначения. По умолчанию Node.js перезаписывает файл, если он уже существует, в указанном месте назначения.
Параметр/аргумент режима, который принимает этот метод, является необязательным. Однако его можно использовать для изменения режима копирования файлов.
Ниже перечислены параметры, которые принимает fs.copyFileSync:
- src — строка, буфер или URL-адрес. Представляет имя исходного файла для копирования
- dest — строка, буфер или URL. Представляет имя целевого файла для создания
- mode — необязательное целое число. Представляет модификаторы операции копирования. По умолчанию = 0. Подробнее о предопределенных константах читайте здесь.
Чтобы копировать файлы с помощью Nodejs, мы должны сначала импортировать наш модуль fs, используя модуль require.
Давайте проиллюстрируем этот метод или функцию на аналогичном примере:
// Печать текущего имени файла перед копированием
console.log("Содержимое файла sample_file:",
fs.readFileSync("sample_file.txt", "utf8")); р>
// Копирование файла sample_file.txt под другим именем
fs.copyFileSync("sample_file.txt", "sync_copied_file.txt);
// Печать текущего имени файла после выполнения функции
console.log("Содержимое файла sync_copied_file:",
fs.readFileSync("sync_copied_file.txt", "utf8"));
Содержимое файла sample_file: это образец файла для операции синхронного копирования.
Содержимое файла sync_copied_file: это пример файла для операции синхронного копирования.
Таким образом, вы можете синхронно копировать файлы из любого источника в любое место назначения.
Нужно ли вам сделать копию системного файла с помощью Node.js? И нужно ли потом переместить файл в новый каталог? В этой статье показано, как это сделать.
В Node.js есть встроенный способ сделать это с помощью основного модуля файловой системы (Fs), который имеет методы fs.copyFile() и fs.copyFileSync() для копирования файла.
Синхронная версия fs.copyFileSync() остановит ваш код и будет ждать, пока файл не будет скопирован или не произойдет ошибка, чтобы продолжить. А асинхронная версия fs.copyFile() не блокирует ваш код и не возвращает функцию обратного вызова, когда файл копируется.
Мы покажем вам, как использовать оба примера.
Чтобы приведенный ниже код работал, убедитесь, что у вас установлен Node.js и файл, который вы хотите скопировать, находится в корневом каталоге вашего проекта. В целях тестирования также убедитесь, что у вас есть созданный каталог с именем backups, в который будет перемещен скопированный файл.
Оглавление
fs.copyFile()
Для начала рассмотрим подход fs.copyFile().
Вот как будет выглядеть код:
Давайте разберем каждую часть кода:
- Сначала мы импортируем модули fs и path core.
- Затем мы создаем переменные pathToFile и pathToNewDestination. Мы используем модуль Path, чтобы получить текущий путь к нашему файлу, который мы хотим изменить. И мы также создаем путь, по которому мы хотим переместить копию файла.
- Затем мы используем функцию fs.copyFile(). Мы передаем функции оба пути к файлам, и она возвращает обратный вызов.
- Внутри функции обратного вызова мы выполняем некоторую обработку ошибок, а затем, в случае успеха, выводим сообщение console.log() об успехе.
Когда вы запускаете код в своем терминале, вы должны увидеть этот вывод:
Если вы посмотрите в каталог резервных копий, где находится файл, вы должны увидеть, что скопированный файл находится там.
Узнайте, как создать и развернуть готовое к работе полнофункциональное приложение с помощью React.js, Node.js и MongoDB.
fs.copyFileSync()
Теперь давайте рассмотрим синхронную версию!
Ниже показан код:
Как и в предыдущем примере, нам нужны оба основных модуля fs и path. Затем мы получаем путь к текущему файлу и создаем путь с желаемым новым именем.
Но тогда мы используем попытку. поймать заявление. В разделе try мы передаем переменные pathToFile и pathToNewDestination в функцию fs.copyFileSync() и регистрируем сообщение об успешном завершении копирования и перемещения файла. И мы используем раздел catch для выдачи любых ошибок, возникающих по пути.
И ваш файл следует скопировать и переместить в каталог резервных копий.
Полное пошаговое руководство по созданию и развертыванию блога программистов с пользовательской CMS, использующей React.js, Node.js, MongoDB и другие.
Заключение
Надеюсь, это помогло вам в работе с системными файлами и Node.js.
Как всегда, спасибо за чтение и удачного кодирования!
Привет, я Ник Мейджор. Я разработчик программного обеспечения из Висконсина, США.
Я создаю бесплатные и платные курсы, опубликовал сотни информационных статей по кодированию и в настоящее время являюсь инженером-программистом внешнего интерфейса в RoundingWell.
fs-extra добавляет методы файловой системы, которые не включены в собственный модуль fs, и добавляет поддержку промисов в методы fs. Он также использует грациозную-fs для предотвращения ошибок EMFILE. Это должна быть замена fs .
Мне надоело включать mkdirp , rimraf и ncp в большинство моих проектов.
Установка
Использование
fs-extra — это замена нативной fs . Все методы в fs привязаны к fs-extra. Все методы fs возвращают обещания, если обратный вызов не передан.
Вам больше не нужно включать исходный модуль fs:
Теперь вы можете сделать это:
или, если вы предпочитаете, чтобы было ясно, что вы используете fs-extra, а не fs , вы можете назвать свою переменную fs fse следующим образом:
вы также можете оставить оба, но это избыточно:
Синхронизация, асинхронность, асинхронность/ожидание
Большинство методов по умолчанию являются асинхронными. Все асинхронные методы вернут обещание, если обратный вызов не будет передан.
Методы синхронизации, с другой стороны, вызовут ошибку в случае возникновения ошибки.
Кроме того, Async/Await выдает ошибку, если она возникает.
Методы
Асинхронный
ПРИМЕЧАНИЕ. Вы по-прежнему можете использовать нативные методы Node.js. Они обещаны и скопированы в fs-extra. См. примечания к fs.read() , fs.write() и fs.writev()
Что случилось с walk() и walkSync()?
Они были удалены из fs-extra в версии 2.0.0. Если вам нужна функциональность, walk и walkSync доступны в виде отдельных пакетов klaw и klaw-sync .
Третья сторона
fse-cli позволяет запускать fs-extra из консоли или из скриптов npm.
TypeScript
Просмотр файлов/каталогов
Если вы хотите отслеживать изменения в файлах или каталогах, вам следует использовать chokidar.
Получить информацию о файловой системе (устройствах, разделах)
fs-filesystem позволяет вам считывать состояние файловой системы хоста, на котором она запущена. Он возвращает информацию как об устройствах, так и о разделах (томах) системы.
- fs-extra-debug — отправляйте вызовы fs-extra для отладки.
- mfs — следите за вызовами fs-extra.
Взлом fs-extra
Хотите взломать fs-extra? Здорово! Нужна ваша помощь! fs-extra — один из самых зависимых пакетов Node.js. В этом проекте используется стандартный стиль JavaScript. Если вас смущает выбор имени или стиля, придется с этим смириться :) Если стандарт достаточно хорош для npm , он достаточно хорош и для fs-extra .
- Во-первых, обратите внимание на существующие проблемы. Это, вероятно, будет приоритетом.
- Дополнительные тесты для крайних случаев. Точнее на разных платформах. Тестов никогда не бывает много.
- Улучшить тестовое покрытие.
Примечание. Если вы вносите какие-либо серьезные изменения, вам обязательно нужно сначала отправить вопрос для обсуждения.
Запуск набора тестов
fs-extra содержит сотни тестов.
- npm run lint : запускает линтер (стандартно)
- npm run unit : запускает модульные тесты
- npm test: запускает и линтер, и тесты.
Окна
Поскольку я разрабатываю для Mac OS X, я использую VMWare Fusion для тестирования Windows. Я создаю общую папку, которую я сопоставляю с диском в Windows. Я открываю командную строку Node.js и запускаю ее от имени администратора. Затем я подключаю сетевой диск, выполнив следующую команду:
Затем я могу перейти в каталог fs-extra и запустить тесты.
Именование
Во-первых, я считаю, что в максимально возможном числе случаев следует выбирать схемы именования Node.js. Однако существуют проблемы с собственными схемами именования Node.js.
Однако у нас есть дилемма. Как правильно назвать методы, выполняющие следующие команды POSIX: cp , cp -r , mkdir -p и rm -rf ?
Моя точка зрения: если сомневаетесь, ошибайтесь в сторону простоты. Каталог — это просто иерархическая группа каталогов и файлов. Задумайтесь об этом на мгновение. Поэтому, когда вы хотите скопировать или удалить его, в большинстве случаев вы захотите скопировать или удалить все его содержимое. Когда вы хотите создать каталог, если каталог, в котором он должен находиться, не существует, то в большинстве случаев вы также захотите создать его.
Итак, если вы хотите удалить файл или каталог независимо от того, есть ли в нем содержимое, просто вызовите fs.remove(path) . Если вы хотите скопировать файл или каталог, независимо от того, имеет ли он содержимое, просто вызовите fs.copy(source, target) . Если вы хотите создать каталог независимо от того, существуют ли его родительские каталоги, просто вызовите fs.mkdirs(path) или fs.mkdirp(path) .
Кредит
fs-extra была бы невозможна без использования модулей следующих авторов:
Читайте также: