google / clasp

🔗 Command Line Apps Script Projects
https://developers.google.com/apps-script/guides/clasp
Apache License 2.0
4.52k stars 422 forks source link

Clarify what exactly the `fileExtension` setting in clasp.json does #1001

Open dandv opened 6 months ago

dandv commented 6 months ago

Expected Behavior

My clasp.json looks like this:

{
  "scriptId": "1lIuKIOPX-...",
  "fileExtension": "gs",
  "filePushOrder": ["basics.gs"]
}

Actual Behavior

clasp push pushes all .ts and .js files, even from ./node_modules. I expected it to only push .gs files. Combined with #983, this seriously hinders usability.

The README section for fileExtension says,

Specifies the file extension for local script files in your Apps Script project.

What exactly does that mean?

Furthermore, the documentation for Push states it ignores files "That don't have an accepted file extension". Where is that accepted file extension configured?

Specifications

sqrrrl commented 6 months ago

fileExtension is used more for pulling from the apps script to local, but doesn't affect filtering when pushing.

Two recommendations for avoiding pushing node_modules:

Personally I used the latter approach and point to a ./dist or ./build dir that contains the output of any build steps. That way you can use rollup or other tools to leverage modules, import npm packages, etc. and have it output code that is flattened and compatible with apps script as a runtime. See https://github.com/sqrrrl/apps-script-typescript-rollup-starter as an example (though realized I didn't check in the template clasp configs)

dandv commented 6 months ago

Thanks! Would be great to add that explanation of fileExtension in the README.