2016-09-19 24 views
1

場景:如何從browserify/babelify導出全局變量以便在沒有browserify的項目中使用?

我有2個項目完全不同的設置:

  1. 正規的網站,通過簡單的設置一飲而盡
  2. 小寵物項目的遺留代碼。在ES6類的幫助下編寫的JS滑塊插件(使用babel進行傳輸)。 JS gulp任務:

    gulp.task('js', function() { 
    return gulp.src('src/scripts/*.js') 
    .pipe($.plumber()) 
    .pipe(through2.obj(function (file, enc, next) { 
        browserify(file.path, { debug: true }) 
        .transform(require('babelify')) 
        .transform(require('debowerify')) 
        .bundle(function (err, res) { 
         if (err) { return next(err); } 
         file.contents = res; 
         next(null, file); 
        }); 
    })) 
    .on('error', function (error) { 
        console.log(error.stack); 
        this.emit('end') 
    }) 
    .pipe($.rename('alder.js')) 
    .pipe(gulp.dest('dist/scripts/')); 
    

    });

我想達到什麼目的?

我希望能夠使用這個常規網站browserify/babelify輸出的文件(沒有設置整個browserify/babelify的東西)。

問題

當然browserify/babelify中做一些神奇的東西,最後包裝所需的變量函數範圍是什麼隱藏這個變量/構造函數。所以問題是導出可用於其他項目的全局變量/構造函數的正確方法是什麼?在這一點上,我想到的唯一的事情就是我的功能附加到像窗口對象:

class Alder { // constructor and then methods } 
    export default Alder; 
    window['Alder'] = Alder 

任何其他的想法?

回答

1

設置standalone選項:

opts.standalone是一個非空字符串,一個獨立的模塊,使用該名稱創建和umd包裝。您可以使用字符串名稱中的.作爲分隔符在獨立的全局導出中使用名稱空間,例如'A.B.C'。全球出口將爲sanitized and camel cased

+0

感謝您的信息。看起來像這個選項實際上也將窗口對象附加到函數:) –

+0

是的,但它也適用於CommonJS和其他環境。 –

相關問題