Мне довелось изменить способ 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"
}
}
}
}
Согласно 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 опции.
это - огромная разница.
От CP Linux (1):
- a, - архивируют то же как-dpR
который сбивает с толку, так как-d, кажется, эквивалентен-p. Так или иначе OSX имеет-p и-R, таким образом, Вы могли просто использовать это.
Лично я использую rsync -a
(или безотносительно rsync
параметрические усилители требуются). Мои две причины: Я уже знаю, как сделать это, и мне нужны мои сценарии, чтобы быть портативным через Linux/BSD/Solaris. Существуют также некоторые файловые системы где rsync
более эффективно, чем cp
.
Извините это не прямой ответ, я использовал ditto
на BSDs, но не имеют никаких глюков для Вас, которые не находятся в странице справочника.
Поскольку j04t указал, что это должно быть cp -pR
На OS X Вы сделали бы
cp -dRL src target
CP сохраняет ресурсы в более новой версии OS X (было это 10.3, когда это произошло?)
Эй d отчасти похож на upsidedown p, право ;)
есть разница между ditto и cp, которая заключается в том, что когда исходный код - это каталог, cp создает каталог с этим именем в месте назначения, но то же самое просто копирует содержимое. Осторожно!