Команда npm для удаления или удаления неиспользуемых пакетов в Node.js

Создание дат между двумя полями даты

Если вам известно о запросе SQL CTE, это решение поможет вам решить ваш вопрос

Вот пример

У нас есть даты в одной таблице

Название таблицы: «testdate»

STARTDATE   ENDDATE
10/24/2012  10/24/2012
10/27/2012  10/29/2012
10/30/2012  10/30/2012

Требовать Результат:

STARTDATE
10/24/2012
10/27/2012
10/28/2012
10/29/2012
10/30/2012

Решение:

WITH CTE AS
  (SELECT DISTINCT convert(varchar(10),StartTime, 101) AS StartTime,
                   datediff(dd,StartTime, endTime) AS diff
   FROM dbo.testdate
   UNION ALL SELECT StartTime,
                    diff - 1 AS diff
   FROM CTE
   WHERE diff<> 0)
SELECT DISTINCT DateAdd(dd,diff, StartTime) AS StartTime
FROM CTE

Объяснение: CTE Рекурсивное пояснение запроса

  • Первая часть запроса: SELECT DISTINCT convert(varchar(10), StartTime, 101) AS StartTime, datediff(dd, StartTime, endTime) AS diff FROM dbo.testdate Объяснение: firstcolumn - «startdate», второй столбец - разность начало и конец даты в днях, и это будет рассматриваться как столбец «diff»
  • Вторая часть запроса: UNION ALL SELECT StartTime, diff-1 AS diff FROM CTE WHERE diff<>0 Объяснение: Союз все наследует результат вышеуказанного запроса до результата имеет значение null, поэтому результат «StartTime» наследуется от сгенерированного запроса CTE, а от diff, уменьшения - 1, поэтому он выглядит как 3, 2 и 1 до 0

Например,

STARTDATE   DIFF
10/24/2012  0
10/27/2012  0
10/27/2012  1
10/27/2012  2
10/30/2012  0

Спецификация результата

STARTDATE       Specification
10/24/2012  --> From Record 1
10/27/2012  --> From Record 2
10/27/2012  --> From Record 2
10/27/2012  --> From Record 2
10/30/2012  --> From Record 3
  • Третья часть запроса SELECT DISTINCT DateAdd(dd,diff, StartTime) AS StartTime FROM CTE Она добавит день «diff» в «startdate», поэтому результат Shou ld будет ниже

Результат

STARTDATE
10/24/2012
10/27/2012
10/28/2012
10/29/2012
10/30/2012
368
задан Tarion 14 March 2018 в 22:45
поделиться

3 ответа

Запустите npm prune для сборки модулей, не перечисленных в package.json.

Из npm help prune:

Эта команда удаляет «посторонние» пакеты. Если указано имя пакета, удаляются только пакеты, соответствующие одному из предоставленных имен.

Посторонние пакеты - это пакеты, которые не перечислены в списке зависимостей родительского пакета.

Если указан флаг --production, эта команда удалит пакеты, указанные в ваших devDependencies.

626
ответ дан Mark Amery 14 March 2018 в 22:45
поделиться

Если вы не беспокоитесь о том, чтобы сделать это пару минут, можно было бы снова rm -rf node_modules и npm install перестроить локальные модули.

276
ответ дан Pyrce 14 March 2018 в 22:45
поделиться

Вы можете использовать npm-prune для удаления посторонних пакетов.

npm prune [[<@scope>/]<pkg>...] [--production] [--dry-run] [--json]

Эта команда удаляет «посторонние» пакеты. Если указано имя пакета, удаляются только пакеты, соответствующие одному из предоставленных имен.

Посторонние пакеты - это пакеты, которые не перечислены в списке зависимостей родительского пакета.

Если указан флаг - production или для переменной среды NODE_ENV установлено значение production , эта команда удалит пакеты, указанные в . ] devDependencies . Установка - без производства будет отменять NODE_ENV , установленный на производство .

Если используется флаг - всухую , то никаких изменений фактически не будет.

Если используется флаг - json , то изменения npm prune , сделанные (или сделанные с - всухую ), будут напечатаны как объект JSON.

При нормальной работе с включенными блокировками пакетов посторонние модули автоматически удаляются при установке модулей, и вам понадобится только эта команда с флагом - production . ​​

Если вы отключили блокировки пакетов, посторонние модули не будут удалены, и вы можете время от времени запускать npm prune для их удаления.

Используйте npm-dedupe для уменьшения дублирования.

npm dedupe
npm ddp

Выполняет поиск в локальном дереве пакетов и пытается упростить общую структуру, перемещая зависимости дальше вверх по дереву, где они могут более эффективно использоваться несколькими зависимыми пакетами. .

Например, рассмотрим этот график зависимости:

a
+-- b <-- depends on c@1.0.x
|    `-- c@1.0.3
`-- d <-- depends on c@~1.0.9
     `-- c@1.0.10

В этом случае npm-dedupe преобразует дерево в:

 a
 +-- b
 +-- d
 `-- c@1.0.10

Из-за иерархическая природа поиска модулей узла, b и d, получит свою зависимость, встречаемую одним пакетом c на корневом уровне дерева.

Алгоритм дедупликации обходит дерево, перемещая каждую зависимость как можно выше в дереве, даже если дубликаты не найдены. Это приведет как к плоскому, так и к дедуплицированному дереву.

7
ответ дан Igor Litvinovich 14 March 2018 в 22:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: