运行 gulp NPM 包安装后没有任何命令的任务
Run gulp task after NPM package install without any command
我开发了一个托管在 npmjs 上的小型 angular 包。当我尝试安装我的包时,我想更改我的 "selector" 名称,以便我编写一个 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');
}
});
我想在我的包安装后 运行 这个任务。为此,我分析并发现我们可以使用 npm postinstall.
然后我尝试了如下:
"dependencies": {
"postinstall": "*"
},
"scripts": {
"postinstall": "gulp tag-change",
"packagr": "ng-packagr -p ng-package.json && gulp npmrc-changelog-schematics-injection && gulp path-change"
}
但它抛出以下错误:
我从这个问题中引用了这个 gulp 任务参考 - Run gulp task after NPM package install
我的包结构如下所示:
最后,我找到了一个解决方案来实现我的要求。
我创建了一个 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"
}
工作正常
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');
}
});
我开发了一个托管在 npmjs 上的小型 angular 包。当我尝试安装我的包时,我想更改我的 "selector" 名称,以便我编写一个 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');
}
});
我想在我的包安装后 运行 这个任务。为此,我分析并发现我们可以使用 npm postinstall.
然后我尝试了如下:
"dependencies": {
"postinstall": "*"
},
"scripts": {
"postinstall": "gulp tag-change",
"packagr": "ng-packagr -p ng-package.json && gulp npmrc-changelog-schematics-injection && gulp path-change"
}
但它抛出以下错误:
我从这个问题中引用了这个 gulp 任务参考 - Run gulp task after NPM package install
我的包结构如下所示:
最后,我找到了一个解决方案来实现我的要求。
我创建了一个 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"
}
工作正常
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');
}
});