簡體   English   中英

如何用gulp和'main-bower-files'選擇縮小的依賴關系?

[英]How to select minified dependencies with gulp and 'main-bower-files'?

我正在嘗試創建一個簡單的gulp任務,它獲取所有bower.json依賴項並將它們注入我的index.html文件。

這就是我的gulpfile.js的樣子:

var gulp = require('gulp');
var bowerFiles = require('main-bower-files');
var inject = require('gulp-inject');

gulp.task('default', function() {
    gulp.src('./public/index.html')
        .pipe(inject(gulp.src(bowerFiles({
            paths: {
                bowerDirectory: './public/bower_components',
                bowerJson: './public/bower.json'
            }
        }), {read: false}), {name: 'bower'}))
        .pipe(gulp.dest('./build'));
});

它有效 這就是我的index.html在./build目錄下的樣子:

<!-- bower:js -->
    <script src="/public/bower_components/zepto/zepto.js"></script>
<!-- endinject -->

但是,我無法使main-bower-files獲取我的縮小的依賴項(在此示例中,包含'/public/bower_components/zepto/zepto.min.js')。

我試過這個覆蓋選項:

{
    "overrides": {
        "BOWER-PACKAGE": {
            "main": "**/*.min.js"
        }
    }
}

還有這個:

{
    "overrides": {
        "BOWER-PACKAGE": {
            "main": {
                "development": "*.js",
                "production": "*.min.js",
            }
        }
    }
}

它不起作用:(

我究竟做錯了什么?

提前致謝!!

有兩種解決方案。
首先,您可以使用bower-main來區分縮小文件和非縮小文件。

另一種選擇是直接處理main-bower-files返回的列表,並檢查縮小文件的存在。 此代碼段在文件路徑存在時用縮小的等效項替換文件路徑。

var mainBowerFiles = require('main-bower-files');
var exists = require('path-exists').sync;

var bowerWithMin = mainBowerFiles().map( function(path, index, arr) {
  var newPath = path.replace(/.([^.]+)$/g, '.min.$1');
  return exists( newPath ) ? newPath : path;
});

請參閱此要點以獲取完整的Gulp任務。

您需要指定要覆蓋的包的名稱, BOWER-PACKAGE在這里是要替換的文本。 您不希望覆蓋所有依賴關系,這就是依賴關系覆蓋的原因。

所以將你的bower.json更改為:

{
  "overrides": {
    "zepto": {
      "main": "zepto.min.js"
    }
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM