首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用其他npm包中的gulp文件(导入最终将存在的文件)

使用其他npm包中的gulp文件(导入最终将存在的文件)
EN

Stack Overflow用户
提问于 2020-09-18 23:24:31
回答 1查看 42关注 0票数 2

我有一个包含多个文件的npm包,其中包含几个gulp任务定义。

我想要的是在主gulp文件中,能够复制这些gulp文件(从包中)并执行它们中定义的gulp任务。

下面是一个示例:

代码语言:javascript
复制
const gulp = require('gulp');
const fs = require('fs');
const path = require('path');

const gulpFolder = path.join(__dirname.replace('gulpfile.js', ''), 'src', 'generated-code', 'gulp'); 

const cleanGulpFiles = (callback) => { ... }

const copyGulpFiles = (callback) => {
    gulp.src(`${nodeModulesFolder}/@primavera/client-app-core/gulp/**/*`)
        .pipe(chmod(666))
        .pipe(gulp.dest(gulpFolder));
    callback();
}

exports.debug = gulp.series(
    cleanGulpFiles, 
    copyGulpFiles,
    require('../src/generated-code/gulp/gulp.debug'));

问题是:当我尝试执行gulp debug时,它检索到一个错误,指出require('../src/generated-code/gulp/gulp.debug')不存在。这是正确的,因为这个文件只有在任务copyGulpFiles完成时才可用。

有没有人知道一个变通方法来完成我想要完成的事情?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-24 22:23:41

我发现的唯一解决方法是组合fs.readFileSynceval函数,以便将gulp文件内容作为字符串读取,然后在运行时计算该代码:

代码语言:javascript
复制
const gulp = require('gulp');
const fs = require('fs');
const path = require('path');

const gulpFolder = path.join(__dirname.replace('gulpfile.js', ''), 'src', 'generated-code', 'gulp'); 

const cleanGulpFiles = (callback) => { ... }

const copyGulpFiles = (callback) => {
    gulp.src(`${nodeModulesFolder}/@primavera/client-app-core/gulp/**/*`)
        .pipe(chmod(666))
        .pipe(gulp.dest(gulpFolder));
    callback();
}

const executeGulpFiles = (callback) => {
    const fileContent = fs.readFileSync('../src/generated-code/gulp/gulp.debug');
    const contentEvaluated = eval(fileContent);
    contentEvaluated(callback);
}

exports.debug = gulp.series(
    cleanGulpFiles, 
    copyGulpFiles,
    executeGulpFiles);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63958557

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档