Grunt scripts replace

Per correggere eventuali errori in librerie con vulnerabilità o errori non pathcabili con update ( perché già all'ultima versione o perché la nuova versione non è retrocompatibili ) si può usare uno script di grunt che automatizza la correzione: ad esempio la libreria bootstrap-select ( @todo cercare un sostituto ) nella sua ultima versione contiene un errore di sintassi scss perché i calcoli vanno effettuati all’interno del costrutto calc()
 
$amnt: $amnt / 100; // convert to percentage if int
 
Per poter correggere possiamo usare uno script di grunt che si chiama grunt-replace 
 
npm install grunt-replace
 
Successivamente dobbiamo creare la procedura all’interno del file Gruntfile.js che va a prendere il file con l’errore e sostituisce la stringa 
 
replace: {

    dist: {

      options: {

        patterns: [

          {

            match: /\$amnt: \$amnt \/ 100;/g,  // Trova la stringa da sostituire

            replace: "$amnt: calc($amnt / 100)"  // Sostituisci con la nuova stringa

          }

        ],

        usePrefix: false  // Non usare il prefisso ~ per le URL

      },

      files: [

        {

          expand: true,

          src: ['dist/vendor/bootstrap-select/sass/bootstrap-select.scss'],

          dest: './'  // Sovrascrivi i file originali

        }

      ]

    }

},
Lo script va caricato 
 
grunt.loadNpmTasks('grunt-replace');
 
e registrato nel posto corretto ( in questo caso ad esempio il gruppo scss viene chiamato dopo il copy per cui il file è già nella dist )
 
    grunt.registerTask('scss', [

        'replace',

        'sass',

        'postcss'

    ]);