如何使用Gatsby向/ public添加任意文件?

时间:2017-05-04 20:21:12

标签: gatsby netlify

我想在/src中添加一个文本文件,使其始终在构建目录(/public)的根目录中保持不变。

在我的案例中,我需要为Netlify添加_redirects file,以将子域重定向到自定义域。

运行Gatsby 1.0 alpha。

5 个答案:

答案 0 :(得分:6)

晚会晚了。

最简单的方法是在项目根目录中添加static文件夹,然后将_redirects放在其中。然后,当您构建Gatsby时,它将自动将其拾取并将其放置在/public文件夹中。

请参见official docs

答案 1 :(得分:3)

不需要将其放入FROM gliderlabs/alpine:3.4 RUN apk update && \ apk add --update bash && \ apk add openssh-client # Security fix for CVE-2016-0777 and CVE-2016-0778 RUN echo -e 'Host *\nUseRoaming no' >> /etc/ssh/ssh_config ENTRYPOINT ["ssh"] 。我刚刚将它直接添加到/src

即使它在/public中,我使用.gitignore,提交它,它也有效。它在构建期间不会被删除或覆盖。

另一种方法(我还没有测试过)就是将文件复制到/ public中的目的地,作为gatsby-node.js中post-build script的一部分。

答案 2 :(得分:0)

即使这个问题得到了回答,我还是找到了另一种方式来做,我也想分享。只需在构建期间复制您的_redirects文件或任何文件,就像这样:

"build": "gatsby build && cp src/_redirects public/"

,它将在每次构建进行部署时复制您的文件。希望对您有所帮助!

答案 3 :(得分:0)

我通过安装gatsby-plugin-copy-files-enhanced插件并编辑 gatsby-config.js 来解决了类似的问题,如下所示:

{
  resolve: `gatsby-source-filesystem`,
  options: {
    name: `extra`,
    path: `${__dirname}/src/extra`,
  },
},
{
  resolve: 'gatsby-plugin-copy-files-enhanced',
  options: {
    source: `${__dirname}/src/extra`,
    destination: '/',
    purge: false,
  },
},

注意:不要忘记将_redirects文件移动到src/extra

答案 4 :(得分:0)

Gatsby now recommends using the ./static/ directory 用于将文件逐字复制到构建目标中。