我一直在使用gulp一段时间,并知道如何导入另一个节点模块,例如。
var sass = require('gulp-sass');
没关系,但是我的gulpfile填满了我想要移动到单独文件和“require”的代码。具体来说,我正在编写一个postcss插件,我已经在gulpfile中声明为函数时已经工作了。我的问题是如何将我的函数放在外部文件中,并像我做一个节点模块一样需要它。我是否需要在需要的文件中“导出”该功能?我需要使用ES6模块吗?
顺便说一句,我意识到,如果我这样做,我可能会(A)将其转换为适当的节点模块并将其放在私有NPM存储库中,但这似乎是不必要的,或者(B)将其转换为一个合适的gulp插件,但这需要学习如何编写gulp插件并学习流和东西。这两个都可能更好,但需要更多的时间,所以我决定暂时保持功能简单和本地。
答案 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-core
和babel-preset-es2015
,并在"presets": ["es2015"]
配置文件中添加预设.babelrc
。
答案 2 :(得分:0)
我可以通过安装解决问题:
npm i babel-plugin-add-module-exports
然后我将 “插件”:[[“” -add-module-exports“]] 添加到 .babelrc < / strong>