browserify,jadeify。需要一个来自node_modules内部模块的j ..奇怪的行为

时间:2014-05-28 09:45:44

标签: javascript pug browserify

我在课堂上要求玉器。如果我将我的模块放入libs文件夹(在node_moduleS之外),但是当我进入node_modules时,jadeify转换永远不会在我的 require('./ views / index.jade')上调用。我已经调试了jadeify的来源,以验证这个require()没有通过它。

index.jade

p= data.name
p
  | console.log("urzuleibailadu")

子模块

function Child () {
  console.log('Dirname: ' + __dirname);
  Child.super_(this);
  console.log('Called new child()');
  this.pages = {};
  this.settings = {
    templates: {
      //index: ''
      index: require('./views/index.jade')
    }
  };
}

这是项目结构(libs / child和node_module / child包含完全相同的文件):

- browserify
-- libs
--- child
---- views
----- index.jade
---- index.js
-- node_modules
--- child
---- views
----- index.jade
---- index.js
-- main.js

通过此修改,在 main.js 中,一切正常:

Child = require('./libs/child')

这会破坏所有,导致 jade 被解析为js(浏览器抛出数据未定义,来自p= data.name)。

Child = require('child')

有什么想法吗?非常感谢。

1 个答案:

答案 0 :(得分:2)

substack 获得answer

这种行为是故意的,因为它允许您在应用程序或库中进行彻底的配置更改,而不必担心您的更改可能会如何影响您依赖的模块,而这些模块不会针对接口或变换可能带来的假设进行编写。

您应该使用自己的package.json配置模块以应用转换:

{
  "browserify": {
    "transform": [ "jadeify" ]
  }
}

或者更好的是,您的软件包可以指定自己的依赖项,以便以一种孤立的方式管理随时间推移逐渐变化的更容易:

{
  "browserify": {
    "transform": [ "jadeify" ]
  },
  "dependencies": {
    "jadeify": "^2.3.0"
  }
}