有没有办法调用Browserify(通过Gulp),以便在{{1}使用给定名称的模块时包含一个不同的文件?
简单地说,我想要的最终结果是我的Browserify入口点,require
:
main.js
在我运行var myPlatformSpecificImplmentation = require('./platform');
// go to town
时运行./path/to/platform-a.js
和gulp js:platform-a
时使用./path/to/platform-b.js
的内容。
如果我使用RequireJS,这就像修改gulp js:platform-b
选项一样简单:
paths
如果我可以通过gulp的内置流机制以某种方式动态生成这些模块,那将是很棒的。在这种情况下,我可以说,将文件传输到paths: {
platform: './path/to/platform-a'
}
并进入Browserify。
由于
答案 0 :(得分:0)
一种解决方案是使用我的pathmodify插件,如下所示:
string strQuery = "UPDATE " + DB_TABLENAME + " SET " +
"LLEGADA = CONVERT(smalldatetime, '@LLEGADA', 126), " +
"SALIDA = CONVERT(smalldatetime, '@SALIDA', 126) " +
"WHERE ID_RESERVA = @ID_RESERVA";
SqlCommand cmd = new SqlCommand(strQuery, con); // con = SqlConnection
cmd.Parameters.Add("@ID_RESERVA", SqlDbType.Int);
cmd.Parameters.Add("@LLEGADA", SqlDbType.SmallDateTime);
cmd.Parameters.Add("@SALIDA", SqlDbType.SmallDateTime);
cmd.Parameters["@ID_RESERVA"].Value = Convert.ToInt32(stringWithIdReserva);
cmd.Parameters["@LLEGADA"].Value = stringWithLLegada.Replace(" ", "T"); //Real string value: "2015-03-30 00:00:00"
cmd.Parameters["@SALIDA"].Value = stringWithSalida.InnerText.Replace(" ", "T"); //Real string value: "2015-04-01 00:00:00"
try
{
cmd.ExecuteNonQuery();
}
catch (SqlException ex)
{
Console.WriteLine(ex.Message);
}
gulpfile.js
var
pathmod = require('pathmodify'),
paths = {a: '/path/to/platform-a.js', b: '/path/to/platform-b.js'};
function platform (version) {
return function () {
return browserify('./main')
.plugin(pathmod(), {mods: [
pathmod.mod.id('app/platform', paths[version])
]})
.bundle()
.pipe(...);
};
}
gulp.task('js:platform-a', platform('a'));
gulp.task('js:platform-b', platform('b'));
main.js
我已将此var myPlatformSpecificImplmentation = require('app/platform');
字符串更改为require()
进行说明,因为这样可以最简单地实现pathmodify,而不会与其他文件中的其他app/platform
相对路径发生冲突。但是这个可以使用pathmodify实现而不会有碰撞的风险(通过测试父模块[在本例中为{./platform
] pathname)。如果您保留main.js
字符串对我很重要,我会说明这一点。
或者您可以使用转换。如果您不想自己动手,请查看benbria/browserify-transform-tools中的./platform
。
如果我能通过gulp的内置流机制以某种方式动态生成这些模块,那将是很棒的。在这种情况下,我可以将文件传输到gulp-template并传输到Browserify。
这不是不可能的,但这并不容易。要在不触摸磁盘的情况下执行此操作,您需要执行诸如创建/ makeRequireTransform()
乙烯基文件之类的操作并通过任何gulp插件运行它,然后将其转换为流以提供给browserify。