> Когда переменная NODE_ENV принимает значение 'production',
Как-нибудь так, например:
"scripts": {
"build": "cross-env NODE_ENV=production webpack --progress --hide-modules",
}
Ну а попадание собранного бандла на сервер в проде — вариантов много, от SFTP/scp до CI и docker.
Можно, кстати, и ставить всякие там вебпаки на прод, ничего смертельного в этом нет. У меня на паре проектов стоит post-merge вот такой:
#/usr/bin/env bash
# MIT © Sindre Sorhus - sindresorhus.com
# git hook to run a command after `git pull` if a specified file was changed
# Run `chmod +x post-merge` to make it executable then put it into `.git/hooks/`.
changed_files="$(git diff-tree -r --name-only --no-commit-id ORIG_HEAD HEAD)"
check_run() {
echo "$changed_files" | grep --quiet "$1" && eval "$2"
}
# Example usage
# In this example it's used to run `npm install` if package.json changed and `grunt build` if files in public/ dir changed.
check_run package.json "npm install"
check_run public/ "grunt build"
Но тут зависит от скорости сборки и от того, какой даунтайм допустим, конечно.