咕噜咕噜浏览器化 - 设置包含,回退路径

Grunt Browserify - set include, fallback path

本文关键字:路径 包含 回退 浏览器 设置      更新时间:2023-09-26

有没有办法为浏览器创建Grunt任务以使用回退路径?例如。

require('./module.js)

检查module.js是否在当前目录中,如果不存在,请检查其他目录?

    project1
     |- dir1
         |- mod1.js - has: require('./mod2.js')
         |- bundle.js - has: require('./mod1.js') and require('./mod2.js')
    project2
     |- dir2
         |- mod1.js 
         |- mod2.js

我已经尝试过重新映射,但它只能检查一个特定的目录。而且我不想更改模块内部的需求路径,一切都应该通过 Grunt 完成。

我想覆盖某些应用程序(dir2),因此我只想获取(复制到dir1)我需要更改的模块,并将所有其他模块保留在应用程序目录中。

咕噜咕噜文件在project1.模块是 CommonJS。我正在使用咕噜咕噜浏览器

我知道

这现在有点旧了,但有一个答案会很好。

所以,几天前我问了自己一个非常相似的问题,最终基本上做了你想做的事情。

使用来自 grunt-browserify 的browserifyOptions,如下所示:

// Using grunt-browserify
grunt.loadNpmTasks("grunt-browserify");
grunt.initConfig({
  browserify : {
    options : {
      browserifyOptions : {
        // keep in mind that paths are relative to Gruntfile.js
        paths: ["./first/path", "./second/path", "./and/so/on"]
      }
    },
    dist : {
      files: { "./path/to/dist.js" : "./path/to/src.js" }
    }
  },
});

您现在可以执行以下操作:

var myModule = require("myModule"); 

opts.path 是一个目录数组,浏览器会在以下情况下进行搜索 查找未使用相对路径引用的模块。能 是绝对的或相对于的 baseIR。相当于设置NODE_PATH 调用浏览器化命令时的环境变量。- 浏览器化

从理论上讲,它应该按顺序遵循路径,我遇到的唯一问题是它在搜索这些路径之前会查看本机节点模块(util、fs 等)。

这句话的意思是,如果你这样做:

var myModule = require("./myModule"); 

浏览器化将按照相对路径查找模块。删除相对路径时:

var myModule = require("myModule");

它可以搜索选项中的稳定路径。

编辑

我对此进行了测试,它按预期工作。我有一个名为myModule的模块.js位于"./current/directory"中,我还有一个名为myModule的模块.js位于"./modules/directory"中。另外,在当前目录中,我有需要模块的"src.js":require("myModule"); 。它按顺序查看路径,在这种情况下,第一个找到的是注入bundle.js的路径。

grunt.initConfig({
  browserify : {
    dist : {
      options : {
        browserifyOptions : {
          // keep in mind that paths are relative to Gruntfile.js
          paths: ["./current/directory", "./modules/directory"]
        }
      },
      files: { "./current/directory/bundle.js" : "./current/directory/src.js" }
    }
  },
});