1

我已经使用 gulp 一段时间了,并且知道如何导入另一个节点模块,例如

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

没关系,但是我的 gulpfile 充满了我想移入单独文件并“要求”的代码。具体来说,我正在编写一个 postcss 插件,当在 gulpfile 中声明为函数时,我已经可以使用它了。我的问题是如何将我的函数放在一个外部文件中并像我做一个节点模块一样需要它。我是否需要“导出”所需文件中的功能?我需要使用 ES6 模块或类似的东西吗?

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

4

3 回答 3

8

首先新建一个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()
}
于 2016-03-07T15:33:03.817 回答
0

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

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

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

于 2018-04-18T17:39:56.323 回答
0

我通过安装解决了我的问题:

npm i babel-plugin-add-module-exports

然后我将"plugins": [["add-module-exports"]] 添加.babelrc

于 2019-05-10T05:02:43.703 回答