Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

当js模块的文件名含有"."时,无法将这个模块的依赖转化到依赖这个模块的依赖里? #90

Open
zombieyang opened this issue Jan 5, 2015 · 7 comments

Comments

@zombieyang
Copy link

呃,可能标题描述得有点绕。
大概就是
a.js依赖b.js
b.js依赖c.js

正常情况下,transport这三个模块时,a模块会被转化为 require('a', ['b', 'c'] ....)
但是假如b.js的文件名中含有另一个".",例如命名为 "b.b.js"时,a模块就只会被转化为require('a', ['b.b'] ...)。因此,concat配合transport使用时,也就不会把c.js也合并进去。

这是否是一个BUG?

https://github.com/xosuperpig/seajs-learning
这是我的测试代码。
执行grunt,会输出with.js和without.js,对应src_withpoint和src_withoutpoint里的代码

@zombieyang
Copy link
Author

目前我自己定位到的问题所在是
在grunt-cmd-transport/tasks/lib/script.js 179行里使用map方法过滤掉了所有依赖的.js后缀名,之后205行通过appendext补回后缀名,但appendext方法中误将.b当成了真正的后缀名,因此这个文件就没有被补回,于是它的依赖就没有被递归搜集到。
我接触seajs并不是很久,还不是很理解这个去掉再补上的缘由。所以我目前先自己暂时强制 +='.js'处理了

@meixuexiang
Copy link

我也遇到了这样的情况,在开发环境中,我使用seajs-text来加载.tpl文件,但在生产环境中,没有使用seajs-text, 而使用.tpl.js把模板当模块加载(因为使用了不支持跨域的静态资源服务器),这样的情况下,transport解析出来的依赖把模板丢失了。建议增加当非.js文件a.b不存在时,对a.b.js的检测

@liupeng110112
Copy link

@lepture 我也遇到 文件名有’.'会丢掉依赖

@xhxno36
Copy link

xhxno36 commented Nov 30, 2015

@popomore @lifesinger @lepture @afc163 我也遇到了这个问题,文件名是a.b.js,依赖老是提取不到,换成a.js,就可以提取了,能修复下这个bug吗

@liupeng110112
Copy link

@xhxno36 已经有人处理过了,搜下替换下就可以避免这个问题

@xhxno36
Copy link

xhxno36 commented Nov 30, 2015

@liupeng110112 在哪里,是按照他说的方法改吗?@xosuperpig

@liupeng110112
Copy link

@xhxno36 http://life.leanote.com/post/grunt-cmd-transport-deps-bugs 看下这个 覆盖下试试

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants