Как использовать так же на OS X для работы как CP-a на Linux

Мне довелось изменить способ gatsby-transformer-remark модифицировать frontmatter, и это напомнило мне этот вопрос. То, как вы это сделали, прекрасно, я думаю, я просто хочу предоставить другой вариант. Вот как вы можете переопределить frontmatter:

Внутренне, gatsby-transformer-remark использовать graymatter для анализа frontmatter уценки (трактуя md как yaml). Мы можем изменить поведение парсера по умолчанию Graymatter, чтобы напрямую переопределить frontmatter.

// should come with `gatsby-transformer-remark` by default
// if it's missing, install it `yarn add js-yaml`
const yaml = require('js-yaml');

const customParser = (str) => {
  const result = yaml.safeLoad(str);

  // modify `title`. In Gatsby, `title` is guaranteed to exist,
  // but you might want to add a check for other properties.
  if (result.title) {
    result.title = result.title.toUpperCase();
  }
  return result;
}

А затем передать его в gatsby-transformer-remark, как

{
  resolve: `gatsby-transformer-remark`,
  options: {
+   engines: {
+     yaml: customParser,
+   },
    plugins: [
      ...
    ],
  },
},

Результаты запроса Гэтсби:

{
  "data": {
    "markdownRemark": {
      "frontmatter": {
        "title": "I AM CAPITALIZED"
      }
    }
  }
}

6
задан Trenton 1 October 2008 в 23:20
поделиться

5 ответов

Согласно CP страницы справочника CP-a совпадает с cp-dpR, который является

-p = preserve mode,ownership,timestamps
-R = recursive
-d = no dereference and preserve links

Эквивалентный OS X был бы

cp-pPR

-p = preserve
-R = recursive
-P = no symbolic links are followed -- can be added but this is the default behavior

Единственной вещью, отсутствующей, является-d, который я думаю, поведение по умолчанию, но я не положителен.

Я никогда не смешивал с так же

Редактирование - @SoloBold

- L переходит по символьным ссылкам.-p НЕ переходит по символьным ссылкам. OS X (10.4, по крайней мере) не имеет никакой-d опции.

это - огромная разница.

8
ответ дан 8 December 2019 в 17:31
поделиться

От CP Linux (1):

- a, - архивируют то же как-dpR

который сбивает с толку, так как-d, кажется, эквивалентен-p. Так или иначе OSX имеет-p и-R, таким образом, Вы могли просто использовать это.

1
ответ дан 8 December 2019 в 17:31
поделиться

Лично я использую rsync -a (или безотносительно rsync параметрические усилители требуются). Мои две причины: Я уже знаю, как сделать это, и мне нужны мои сценарии, чтобы быть портативным через Linux/BSD/Solaris. Существуют также некоторые файловые системы где rsync более эффективно, чем cp.

Извините это не прямой ответ, я использовал ditto на BSDs, но не имеют никаких глюков для Вас, которые не находятся в странице справочника.

3
ответ дан 8 December 2019 в 17:31
поделиться

Поскольку j04t указал, что это должно быть cp -pR

На OS X Вы сделали бы

cp -dRL src target

CP сохраняет ресурсы в более новой версии OS X (было это 10.3, когда это произошло?)

Эй d отчасти похож на upsidedown p, право ;)

0
ответ дан 8 December 2019 в 17:31
поделиться

есть разница между ditto и cp, которая заключается в том, что когда исходный код - это каталог, cp создает каталог с этим именем в месте назначения, но то же самое просто копирует содержимое. Осторожно!

0
ответ дан 8 December 2019 в 17:31
поделиться
Другие вопросы по тегам:

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