简体   繁体   English

在 NPM package 安装之后运行 gulp 任务,无需任何命令

[英]Run gulp task after NPM package install without any command

I've developed a small angular package that is hosted on npmjs.我开发了一个托管在 npmjs 上的小型 angular package。 when I try to install my package I want to change my "selector" name so that I have written one gulp task like below:当我尝试安装 package 时,我想更改我的“选择器”名称,以便编写一个 gulp 任务,如下所示:

 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'); } });

I want to run this task after my package got installed.我想在我的 package 安装后运行这个任务。 for this, I have analyzed and found that we can able to use npm postinstall .为此,我分析发现我们可以使用npm postinstall

Then i have tried like below:然后我尝试如下:

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

But it throws below error:但它会引发以下错误:

在此处输入图像描述

I have referred this gulp task reference from this issue - Run gulp task after NPM package install我已经从这个问题中引用了这个 gulp 任务参考 - 在 NPM ZEFE90A8E604A7C840E88D03A 之后运行 gulp 任务

my package structure lokks like below:我的 package 结构如下所示: 在此处输入图像描述

Finally, I found out a solution to achieve my requirements.最后,我找到了满足我要求的解决方案。

I have created a tagchange.js file and placed the below content.我创建了一个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'); }

And I have called this in my package package.json file like below:我在我的 package package.json文件中调用了它,如下所示:

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

It is working fine它工作正常

 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'); } });

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM