Почему npm 5.6 изменяет время доступа package.json в Windows? [Дубликат]

У меня была функция:

function parseDevName(name) {
  var re = /^([^-]+)-([^-]+)-([^-]+)$/g;
  var match = re.exec(name);
  return match.slice(1,4);
}

var rv = parseDevName("BR-H-01");
rv = parseDevName("BR-H-01");

Первый вызов работает. Второй звонок - нет. Операция slice жалуется на нулевое значение. Я предполагаю, что это из-за re.lastIndex. Это странно, потому что я ожидал бы, что новый RegExp будет выделяться каждый раз, когда функция вызывается и не разделяется между несколькими вызовами моей функции.

Когда я изменил ее на:

var re = new RegExp('^([^-]+)-([^-]+)-([^-]+)$', 'g');

Тогда я не получаю эффект удержания lastIndex. Он работает так, как я ожидал.

16
задан Kendall Frey 9 September 2015 в 22:54
поделиться

1 ответ

Обновление: Еще проще установить npm@5.8.0 или новее.

Предполагая Git, самым простым «решением» этой проблемы является использование .gitattributes, чтобы указать, что package.json (и теперь package-lock.json) всегда должны использовать LF:

# .gitattributes in project root
package.json text eol=lf
package-lock.json text eol=lf
7
ответ дан dahlbyk 22 August 2018 в 11:41
поделиться
  • 1
    Потрясающие. Обратите внимание, что вы также можете использовать подстановочный знак: package*.json text eol=lf – emackey 22 September 2017 в 20:23
  • 2
    Я обсуждал использование шаблона ... но что, если проект включает в себя другой файл, который начинается с package и заканчивается на .json ?! (Преждевременная оптимизация - это весело.) – dahlbyk 28 September 2017 в 20:46
Другие вопросы по тегам:

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