我有一个包含2个入口点的项目,所以2个package.json。我在这两个文件夹中使用gulp来构建javascript / less文件。
我想使用常用功能来避免代码重复。 这是结构
在gulp / bootstrap中,我有类似的东西
'use strict';
global._ = require('lodash');
global.gulp = require('gulp');
global.$ = require('gulp-load-plugins')();
global.argv = require('yargs').argv;
global.source = require('vinyl-source-stream');
global.buffer = require('vinyl-buffer');
global.watchify = require('watchify');
/**
* Handle tasks errors
* @param {Object} err
*/
global.onError = function onError(err) {
if (isProd()) {
$.util.log($.util.colors.red(err));
process.exit(1);
} else {
$.util.log($.util.colors.red(err));
this.emit('end');
}
};
/**
* return true if argv env is prod
* @return {boolean}
*/
global.isProd = function isProd() {
return argv.env === 'prod';
};
global.isWatch = function() {
return !!argv.watch;
};
$.util.log($.util.colors.yellow('Production env: ', isProd()));
$.util.log($.util.colors.yellow('Watch mode: ', isWatch()));
在dirA / gulpfile和dirB / gulpfile中,我想导入gulp / bootstrap,其中require('../gulp/bootstrap');
位于gulpfile.js的顶部。
但是这样做,要求函数找不到bootstrap.js中所需的模块,即使我需要在包含node_modules /文件夹的文件夹中的bootstrap文件。它在gulp /文件夹中搜索node_modules / ...
这是告诉要求使用基本路径的方法吗?比如[process.cwd(), 'node_modules'].join('/');
答案 0 :(得分:0)
您可以在bootstrap.js
中尝试以下内容:
function requireFromCwd(moduleName) {
return require([process.cwd(), 'node_modules', moduleName].join('/'));
}
global._ = requireFromCwd('lodash');
global.gulp = requireFromCwd('gulp');
global.$ = requireFromCwd('gulp-load-plugins')();
global.argv = requireFromCwd('yargs').argv;
global.source = requireFromCwd('vinyl-source-stream');
global.buffer = requireFromCwd('vinyl-buffer');
global.watchify = requireFromCwd('watchify');