Elderjs / template

Elder.js template project. It is part template, part tutorial. Dive in!
https://elderjs.pages.dev/
MIT License
113 stars 32 forks source link

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

Open renekliment opened 4 years ago

renekliment commented 4 years ago

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 commented 4 years ago

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 commented 3 years ago

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 commented 2 years ago

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.