NPM软件包安装后运行gulp任务,无需任何命令

问题描述 投票:0回答:2

我已经开发了一个小角度包,它托管在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任务参考-Run gulp task after NPM package install

我的包装结构如下:enter image description here

javascript node.js npm post-install
2个回答
0
投票

最后,我找到了满足要求的解决方案。

我创建了一个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"
  }

正常工作


0
投票

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');
 }
});
© www.soinside.com 2019 - 2024. All rights reserved.