Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

The copyAssetsToPublic hook doesn't copy dotfiles files like .htaccess #26

Open
renekliment opened this issue Oct 28, 2020 · 3 comments

Comments

@renekliment
Copy link

Hi!

Due to

  1. the glob.sync() not having { dot: true } as the options parameter and
  2. the extenstion condition

dotfiles are not copied.

I have 2 questions:

  1. Is this intended behaviour?
  2. What is the condition for? What use-case does it solve?
@swyxio
Copy link
Contributor

swyxio commented Oct 28, 2020

hey! i wrote those lines of code. you're free to modify those for whatever needs. i'm not sure about the intention but perhaps it avoids internals like DS_Store and .git and CODEOWNERS. stuff like that shouldnt be exposed to public. but think we would be happy to accept a PR to improve this.

@vlisivka
Copy link

To copy CNAME and .nojekyll files, hook must look like that:

  {
    hook: 'bootstrap',
    name: 'copyAssetsToPublic',
    description:
      'Copies ./assets/ to the "distDir" defined in the elder.config.js. This function helps support the live reload process.',
    run: ({ settings }) => {
      // Note that this function doesn't manipulate any props or return anything.
      // It is just executed on the 'bootstrap' hook which runs once when Elder.js is starting.

      // Copy assets folder to public destination
      glob.sync(path.resolve(settings.rootDir, './assets/**/*'), {dot: true, nodir: true, ignore: ['.DS_Store']}).forEach((file) => {
        const relativeToAssetsFolder = path.relative(path.join(settings.rootDir, './assets'), file);
        const outputPath = path.resolve(settings.distDir, relativeToAssetsFolder);
        fs.ensureDirSync(path.parse(outputPath).dir);
        fs.outputFileSync(outputPath, fs.readFileSync(file));
      });
    },
  },

@markjaquith
Copy link
Contributor

I ran into this issue today. I was trying to get a _redirects file sent to public for Cloudflare Pages, and it took me an embarrassing amount of time to figure out what was going on. I don't think the benefit here is worth the confusion. .git and CODEOWNERS shouldn't be in that folder. .DS_Store is in .gitignore so it won't end up leaving local Mac dev machines.

markjaquith added a commit to markjaquith/elderjs-template that referenced this issue Jul 13, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants