需要gulpfile中的另一个文件(不在node_modules中)

时间:2016-03-07 15:27:06

标签: javascript node.js gulp postcss

我一直在使用gulp一段时间,并知道如何导入另一个节点模块,例如。

var sass = require('gulp-sass');

没关系,但是我的gulpfile填满了我想要移动到单独文件和“require”的代码。具体来说,我正在编写一个postcss插件,我已经在gulpfile中声明为函数时已经工作了。我的问题是如何将我的函数放在外部文件中,并像我做一个节点模块一样需要它。我是否需要在需要的文件中“导出”该功能?我需要使用ES6模块吗?

顺便说一句,我意识到,如果我这样做,我可能会(A)将其转换为适当的节点模块并将其放在私有NPM存储库中,但这似乎是不必要的,或者(B)将其转换为一个合适的gulp插件,但这需要学习如何编写gulp插件并学习流和东西。这两个都可能更好,但需要更多的时间,所以我决定暂时保持功能简单和本地。

3 个答案:

答案 0 :(得分:5)

首先创建一个新的js文件(此处为./lib/myModule.js):

//./lib/myModule.js
module.exports =  {
    fn1: function() { /**/ },
    fn2: function() { /**/ },
}

您还可以将一些参数传递给您的模块:

// ./lib/myAwesomeModule.js
var fn1 = function() {
}
module.exports =  function(args) {
    fn1: fn1,
    fn2: function() { 
        // do something with the args variable
    },
}

然后在你的gulpfile中要求它:

//gulpfile.js
var myModule = require('./lib/myModule')

// Note: here you required and call the function with some parameters
var myAwesomeModule = require('./lib/myAwesomeModule')({
    super: "duper",
    env: "development"
});

// you could also have done
/*
var myAwesomeModuleRequire = require('./lib/myAwesomeModule')
var myAwesomeModule = myAwesomeModuleRequire({
    super: "duper",
    env: "development"
});
*/

gulp.task('test', function() {
   gulp.src()
    .pipe(myModule.fn1)
    .pipe(myAwesomeModule.fn1)
    .gulp.dest()
}

答案 1 :(得分:0)

首先,您必须在文件末尾添加export default <nameOfYourFile>

然后使用它,写下import gulp from 'gulp'

如果您有错误消息,请使用NPM安装babel-corebabel-preset-es2015,并在"presets": ["es2015"]配置文件中添加预设.babelrc

答案 2 :(得分:0)

我可以通过安装解决问题:

npm i babel-plugin-add-module-exports

然后我将 “插件”:[[“” -add-module-exports“]] 添加到 .babelrc < / strong>