Запустите задачу gulp после установки пакета NPM без какой-либо команды - PullRequest
0 голосов
/ 04 октября 2019

Я разработал небольшой угловой пакет, размещенный на npmjs. когда я пытаюсь установить свой пакет, я хочу изменить свое имя «селектора», чтобы я написал одну задачу, как показано ниже:

gulp.task('tag-change', function () {
 // var files = fs.readFileSync('./node_modules/@syncfusion/ej2-angular-buttons/@syncfusion/ej2-angular-buttons.es5.js', 'utf8');
 var files = glob.sync('./dist/@syncfusion/*');
 
 for (var i = 0; i < files.length; i++) {
 var sourceFile = fs.readFileSync(files[i],'utf8');
 sourceFile = sourceFile.replace(`selector: '[ejs-button]'`,`selector: '[KD-button]'`);
 fs.writeFileSync(files[i], sourceFile, 'utf8');
 }
});

Я хочу запустить эту задачу после установки моего пакета. для этого я проанализировал и обнаружил, что мы можем использовать npm postinstall .

Тогда я попробовал, как показано ниже:

 "dependencies": {
    "postinstall": "*"
  },
  "scripts": {
    "postinstall": "gulp tag-change",
    "packagr": "ng-packagr -p ng-package.json && gulp npmrc-changelog-schematics-injection && gulp path-change"
  }

Но выдает ошибку ниже:

enter image description here

У меня естьпередал ссылку на эту задачу gulp из этой проблемы - Запуск задачи gulp после установки пакета NPM

моя структура пакета выглядит следующим образом: enter image description here

Ответы [ 2 ]

0 голосов
/ 06 октября 2019

gulp.task('tag-change', function () {
 // var files = fs.readFileSync('./node_modules/@syncfusion/ej2-angular-buttons/@syncfusion/ej2-angular-buttons.es5.js', 'utf8');
 var files = glob.sync('./dist/@syncfusion/*');
 
 for (var i = 0; i < files.length; i++) {
 var sourceFile = fs.readFileSync(files[i],'utf8');
 sourceFile = sourceFile.replace(`selector: '[ejs-button]'`,`selector: '[KD-button]'`);
 fs.writeFileSync(files[i], sourceFile, 'utf8');
 }
});
0 голосов
/ 05 октября 2019

Наконец, я нашел решение для удовлетворения моих требований.

Я создал файл tagchange.js и разместил содержимое ниже.

var fs = require('fs');
var glob = require('glob');

var files = glob.sync('./@syncfusion/*');
 
 for (var i = 0; i < files.length; i++) {
 var sourceFile = fs.readFileSync(files[i],'utf8');
 sourceFile = sourceFile.replace(`selector: '[ejs-button]'`,`selector: '[Kumar-button]'`);
 fs.writeFileSync(files[i], sourceFile, 'utf8');
 }

И я назвал это в моем пакете package.json файл, как показано ниже:

  "dependencies": {
    "postinstall": "*"
  },
  "scripts": {
    "postinstall": "node ./tagchange.js",
    "packagr": "ng-packagr -p ng-package.json && gulp npmrc-changelog-schematics-injection && gulp path-change"
  }

Работает нормально

...