install.fairie/.config/taskfiles/npm/Taskfile-bundle.yml
Brian Zalewski f42899b107 Latest
2022-12-24 15:04:59 -05:00

127 lines
4.4 KiB
YAML

---
version: '3'
tasks:
create:
deps:
- :install:software:jq
log:
error: Error creating production `node_modules/` pack
start: Creating production `node_modules/` pack
success: Successfully created production `node_modules/` pack
cmds:
- |
if [ -d node_modules ]; then
mv node_modules node_modules.bak
fi
- task: install
- task: minify
- task: pack
- rm package-lock.json
- |
if [ -d node_modules.bak ]; then
rm -rf node_modules
mv node_modules.bak node_modules
fi
status:
- '[ $(jq -r ".dependencies | length" package.json) == "0" ]'
install:
deps:
- :install:software:node
log:
error: Encountered error while running `npm install --only=prod`
start: Installing production `node_modules/`
success: Successfully set-up production `node_modules/` folder
cmds:
- SKIP_NPM_START=true npm install --only=prod
minify:
deps:
- :install:go:node-prune
- :install:npm:modclean
summary: |
## node-prune
`node-prune` is a Go project that does a good job at cleaning up projects while
remaining safe.
## modclean
`modclean` does what `node-prune` does and takes it a step further.
`modclean` provides 3 different patterns by default. They are:
* `default:safe` - Contains patterns that are considered safe and should not
affect your application. It also removes the most files/folders of all the configurations.
* `default:caution` - Contains patterns that could potentially cause issues with
modules, but includes patterns that will help reduce your modules folder size.
* `default:danger` - Contains patterns that are known to cause issues with certain
modules, but can help reduce files and your modules folder size even further.
**To clean with `default:safe` and `default:caution`, you can run:**
`task npm:bundle:minify -- default:safe,default:caution
**To clean with all of them:**
`task npm:bundle:minify -- default:*`
If CLI arguments are not passed, then the task looks at `.blueprint.modcleanPatterns` in `package.json`
for the patterns. And if that is not present, then `default:safe,default:caution` is used by default.
You can see the [default patterns here](https://github.com/ModClean/modclean-patterns-default/blob/master/patterns.json).
vars:
MODCLEAN_PATTERNS:
sh: |
{{if .CLI_ARGS}}echo '{{.CLI_ARGS}}'{{else}}PREFERENCE="$(jq -r '.blueprint.modcleanPatterns' package.json)"
if [ "$PREFERENCE" != 'null' ]; then
echo "$PREFERENCE"
else
echo "default:safe,default:caution"
fi{{end}}
log:
error: Encountered error while pruning production `node_modules/` folder
start: Pruning production `node_modules/` folder
success: Successfully pruned production `node_modules/` folder
cmds:
- node-prune
- modclean --patterns="{{.MODCLEAN_PATTERNS}}" --run
pack:
deps:
- :install:npm:pac
log:
error: Error compressing production `node_modules/` into `.tgz` files stored in the `.modules/` folder
start: Packing production `node_modules/` into `.tgz` files stored in the `.modules/` folder
success: Finished packing production `node_modules/` into the `.modules/` folder
cmds:
- mkdir -p .modules
- .config/log info '`pac` is being replaced by `produndle` - WIP' || produndle pack
unpack:
deps:
- :install:software:jq
cmds:
- task: unpack:pac
status:
- '[ ! -d .modules ] || ([ -d .modules ] && (! ls .modules | grep .tgz))'
unpack:pac:
deps:
- :install:npm:pac
log:
error: Error running `unpack:pac`
start: Populating `node_modules/` with `.tgz` files in the `.modules` folder
success: Finished populating `node_modules/` folder
cmds:
- .config/log info '`pac` is being replaced by `produndle` - WIP' || produndle unpack
- |
BASE_DIR="$(PWD)"
for MODULE in node_modules/*; do
cd "$MODULE"
if [ -f Taskfile.yml ]; then
task unpack || EXIT_CODE=$?
if [ -n "$EXIT_CODE" ]; then
"${PWD}/.config/log" warn 'There was an error running `task unpack` in '"$MODULE"
fi
fi
done