我正在尝试将uncss npm模块编译成一个适合ExecJS编译的.js文件。例如,咖啡脚本人有this。目标是为它创建一个简单的ruby包装器,类似于ruby-coffee-script。
我尝试过的目标:
使用了browserify,它应该已经完成了这个技巧,但它无法使用以下错误消息编译lib / uncss.js:
Error: ENOENT, open 'tls' while resolving "tls" from file /home/prajjwal/code/uncss/node_modules/request/node_modules/forever-agent/index.js
我想这是因为browserify没有适当的垫片吗?我也关注浏览器替换节点模块的垫片。它们完全可以安全使用吗?我将把它嵌入红宝石中。不要认为浏览器是我应该使用的。还有另外一种方法可以从npm模块生成一个独立的.js吗?
任何帮助表示感谢。
答案 0 :(得分:13)
Browserify有一个--standalone标志,可以在这里提供帮助。
在命令行上:
browserify -s moduleName --bare moduleName.js -o filename.js
在节点脚本中,您可以正常导入连接模块:
var moduleName = require('./filename');
但是,您可能仍需要忽略和/或删除任何棘手的模块。
答案 1 :(得分:0)
虽然这不是不可能,但它有点复杂,我知道没有自动完成的工具,但可以手动完成。
因此,如果您以这种方式加载模块:
var async = require('async');
您可以包含该模块的来源,首先,在主脚本中声明模块实例:
var global_async = null;
然后,在匿名函数中包含模块代码,并将“module.exports”替换为您之前声明的全局变量:
module.exports = async
用
global_async = async;
问题是“unss”有很多依赖关系,每个都有一些依赖关系,所以要完成很多工作,但并非不可能......但最后,这个模块还需要一些外部的像“phantomjs”这样的二进制文件。
如果你想构建一个围绕“unss”创建包装的gem,你可以检查node和uncss是否安装在任何东西之前,如果没有,安装两者,然后只需调用它们,就像用phantomjs的uncss一样。 / p>