2017-09-25 2 views
0

Je voudrais avoir des données de semences différentes entre le développement et la production. Comment puis-je le spécifier dans la configuration? Je suis conscient que dans le .sequelizerc je peux charger un fichier de configuration dynamique et spécifiez un seeders-path Différents répertoires pour les données de graine à l'aide de sequelize

// .sequelizerc 
const path = require('path') 

module.exports = { 
    "config": path.resolve('./app/config', 'config.json'), 
    "models-path": path.resolve('./app/models'), 
    "migrations-path": path.resolve('./app/migrations') 
    "seeders-path": path.resolve('./app/seeders') 
} 

Et la config

// ./app/config/config.json 
{ 
    "development": { 
    // environment specific configuration 
    ... 

Est-il possible de choisir le seeders-path dans la configuration dynamique? Ou vais-je faire une certaine logique comme

"seeders-path": process.env.NODE_ENV === 'development'? 
    "seeders/development" : 
    "seeders/production" 

Répondre

3

Vous pouvez utiliser des scripts NPM quelque chose comme ceci:

// package.json 
"scripts": { 
    "sequelize:prod": "sequelize $* --seeders-path seeders/production", 
    "sequelize:dev": "sequelize $* --seeders-path seeders/development", 
} 

Ou vous pouvez passer config directement comme ceci:

// package.json 
"scripts": { 
    "sequelize:dev": "sequelize $* --config some/path/dev.js" 
    "sequelize:prod": "sequelize $* --config some/path/prod.js" 
} 

Listes d'options que vous pouvez passer pour se séparer:

  1. --envchaîne L'environnement pour exécuter la commande en
  2. --configchaîne Le chemin vers le fichier de configuration
  3. --options-cheminchaîne Le chemin d'un Fichier JSON avec options supplémentaires
  4. --migrations-patchaîne Le chemin d'accès au dossier de migrations
  5. --seeders-cheminchaîne Le chemin vers le dossier semoirs
  6. --Modèles-cheminchaîne Le chemin vers les modèles dossier
  7. --urlchaîne La chaîne de connexion à la base de données à utiliser. Alternative à l'utilisation --config fichiers
  8. --debugbolean Lorsque disponibles montrent diverses informations de débogage bolean

Dans les sources de sequelize-cli ont ce code link:

function loadRCFile(optionsPath) { 


const rcFile = optionsPath || path.resolve(process.cwd(), '.sequelizerc'); 
    const rcFileResolved = path.resolve(rcFile); 
    return fs.existsSync(rcFileResolved) 
    ? JSON.parse(JSON.stringify(require(rcFileResolved))) 
    : {}; 
} 

const args = yargs 
    .config(loadRCFile(yargs.argv.optionsPath)); 

Vous peut charger différents fichiers comme ".sequelizerc":

// package.json 
"scripts": { 
    "sequelize:dev": "sequelize $* --options-path some/path/dev.js" 
    "sequelize:prod": "sequelize $* --options-path some/path/prod.js" 
} 

// some/path/dev.js 
const path = require('path'); 

module.exports = { 
    "config": path.resolve('./app/config', 'config.json'), 
    "models-path": path.resolve('./app/models'), 
    "migrations-path": path.resolve('./app/migrations') 
    // here your development path to seeders 
    "seeders-path": path.resolve('./app/seeders/development') 
} 

// some/path/prod.js 
const path = require('path'); 

module.exports = { 
    "config": path.resolve('./app/config', 'config.json'), 
    "models-path": path.resolve('./app/models'), 
    "migrations-path": path.resolve('./app/migrations') 
    // here your development path to seeders 
    "seeders-path": path.resolve('./app/seeders/production') 
} 

Mais vous pouvez créer des semoirs pour différents ENV dans un répertoire semeur.

Disons, nous avons.sequelizerc

// .sequelizerc 
const path = require('path') 

module.exports = { 
    "config": path.resolve('./app/config', 'config.json'), 
    "models-path": path.resolve('./app/models'), 
    "migrations-path": path.resolve('./app/migrations') 
    "seeders-path": path.resolve('./app/seeders') 
} 

Créer semoirs:

sequelize seed:generate --name create_users-dev.js 
sequelize seed:generate --name create_users-prod.js 
sequelize seed:generate --name create_users-whatever.js 

Et nous courons seulement semoirs dev:

sequelize db:seed --seed `basename $(ls app/seeders/*-dev.js)` 

ou prod semoirs:

sequelize db:seed --seed `basename $(ls app/seeders/*-prod.js)` 

ou tout simplement les utilisateurs dev semoirs

sequelize db:seed --seed `basename $(ls app/seeders/*users-dev.js)` 

Vous pouvez choisir quel semeur vous souhaitez exécuter.

Format:

sequelize db:seed --seed <array> 
sequelize db:seed --seed file1 file2 fileN 
+0

Pouvez-vous expliquer la région où vous dites "Dans les sources ont ce code:"? Où se trouve ce code dans une application Node type? –

+0

@ G.Deward Je veux dire sources sequelize-cli [voir ici] (https://github.com/sequelize/cli/blob/5633648ecb6d81b3fdeafadd5ee1c9e6fb350dd5/src/core/yargs.js#L5) –