【问题标题】:NodeJS specify node_modules path for requireNodeJS 为 require 指定 node_modules 路径
【发布时间】:2016-08-27 01:08:38
【问题描述】:

我有一个项目包含 2 个入口点和 2 个 package.json。我在这 2 个文件夹中使用 gulp 来构建 javascript/less 文件。

我想使用常用函数来避免代码重复。 这是结构

  • dirA/
    • node_modules/
    • gulpfile.js
  • 目录/
    • node_modules/
    • gulpfile.js
  • 一饮而尽
    • bootstrap.js

在 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 中,我想使用 gulpfile.js 的 require('../gulp/bootstrap');top 导入 gulp/bootstrap。 但是这样做,即使我需要包含 node_modules/ 文件夹的文件夹中的引导文件,require 函数也无法找到 bootstrap.js 中所需的模块。它在 gulp/ 文件夹中搜索 node_modules/...

这是一种告诉 require 使用基本路径的方法吗?喜欢[process.cwd(), 'node_modules'].join('/');

【问题讨论】:

    标签: node.js gulp require


    【解决方案1】:

    您可以在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');
    

    【讨论】:

      猜你喜欢
      • 2014-12-05
      • 1970-01-01
      • 2015-09-13
      • 2022-01-25
      • 2014-10-22
      • 2016-07-04
      • 2018-01-07
      • 2011-08-31
      • 1970-01-01
      相关资源
      最近更新 更多