2017-08-28 3 views
0

J'ai un package pour npm que j'ai construit localement pendant quelques mois. Pour que cela fonctionne correctement, il faut accéder à une base de données PostgreSQL. Par conséquent, il doit de préférence exécuter automatiquement un script qui crée la base de données et les tables.Création d'une base de données PostgreSQL lors de l'installation de npm

Est-ce possible, et si possible, où puis-je faire ce script? Je voudrais automatiser autant que possible lorsque npm install s'exécute.

+0

J'ai essayé de chercher des informations sur l'exécution d'un script qui crée des bases de données, en tenant compte de l'utilisateur qui exécute npm, mais il n'y a rien à trouver. C'est pourquoi je demande ici. –

Répondre

0

Demandez nmp Invoke psql -qAtX -v ON_ERRORS_STOP=1 -f my_script.sql et l'erreur si elle renvoie non nulle. Cela devrait être comme exécuter une autre commande dans votre script d'installation.

Vous pouvez psql se connecter à la base de données postgres d'abord, puis

CREATE DATABASE mydb; 
\c mydb 

Reconnect au nouveau DB. Mais personnellement, je voudrais avoir un appel psql créer la base de données, puis un autre se connecter à la nouvelle base de données. Cela simplifie la gestion des erreurs.

Vous pouvez définir l'instance postgres pour se connecter à l'aide de variables d'environnement, PGUSERPGHOST, PGDATABASE, etc (voir le psql manuel) ou par l'intermédiaire des paramètres passés à la commande.

psql par défaut le nom de l'unix/windows actuel compte utilisateur si l'on est pas spécifié.

+0

Merci beaucoup. Je n'ai trouvé aucune information à ce sujet plus tôt. –

+0

Juste posté à ce sujet: https://mail.google.com/mail/u/1/?ui=2&ik=cee2ba9a0e&jsver=-8Gn2zfonJc.en_GB.&view=om&th=15e2746f665bc23b –

+0

Notez que je suppose que vous avez un pré -une instance postgres existante pour se connecter, et juste besoin de le peupler. Si vous devez créer une instance postgres, vous devrez aussi lancer 'initdb'. Notez, s'il vous plaît ** n'utilisez pas le port postgres par défaut ** si le programme d'installation de votre application crée sa propre instance postgres. –