我一直在使用es6类,导入和导出为我们的主项目工作。主代码使用Angular 1(即AngularJS)
我已经在这里和其他地方遵循了使用browsify和babelify的建议并且几乎让它工作但我坚持我希望是最后一步。我无法从主代码中引用我的库。
我们使用gulp所以我需要将它放入该框架中。我想出了以下内容来创建库:
function cliCompile() {
console.log('Compiling client-server...');
return browserify({
entries: 'cli/main.js',
debug: true,
require: './cli/main.js',
transform: [babelify]})
.bundle()
.pipe(source('cli.js'))
.pipe(gulp.dest('./app/compiled'));
}
由此产生的需求对我的计算机来说是唯一的(完整路径)所以我显然需要使用别名。但是,看起来别名不能与上述相符,或者我不知道正确的格式。将请求行更改为
require: 'cli/main.js:CSMain"
无效,因为它将引用字符串的完整内容视为文件名/模块。
有没有办法重写这个,所以它会工作,并在主角度代码中有一个别名我可以参考?请注意,引用上面给出的函数的行是:
gulp.task('cli', cliCompile);
答案 0 :(得分:0)
别名确实可以解决这个问题。但是,当您将require作为初始参数的一部分传入时,似乎无法指定require选项。
而是调用.require如下:
gulp.task('cli', cliCompile);
....
function cliCompile() {
console.log('Compiling client-server...');
var b = browserify({
entries: 'cli/main.js',
debug: true,
transform: [babelify]});
b.require('./cli/main.js', {expose: 'cli'});
return b.bundle()
.pipe(source('cli.js'))
.pipe(gulp.dest('./app/compiled'));
}
也可以将需求放在列表中:
return browserify({
entries: 'cli/main.js',
debug: true,
transform: [babelify]})
.require('./cli/main.js', {expose: 'cli'})
.bundle()
.pipe(source('cli.js'))
.pipe(gulp.dest('./app/compiled'));