• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

cthrax/gulp-bower-normalize: Normalize bower files so checked in structure is co ...

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称(OpenSource Name):

cthrax/gulp-bower-normalize

开源软件地址(OpenSource Url):

https://github.com/cthrax/gulp-bower-normalize

开源编程语言(OpenSource Language):

JavaScript 100.0%

开源软件介绍(OpenSource Introduction):

gulp-bower-normalize Build Status

Use rules in the bower.json or implicit rules to normalize the files being copied out of bower_components so that a consistent and clean version of the bower dependencies can be checked into the repo. This is intended to work with main-bower-files.

INSTALL

npm install --save-dev gulp-bower-normalize

USAGE

Designed to work with main-bower-files as so:

gulp.task('default', function() {
    var bower = require('main-bower-files');
    var bowerNormalizer = require('gulp-bower-normalize');
    return gulp.src(bower(), {base: './bower_components'})
        .pipe(bowerNormalizer({bowerJson: './bower.json'}))
        .pipe(gulp.dest('./bower_dependencies/'))
});

bower.json

{
    name and otherstuff
    "dependencies": {
        "dependency1": "~1.0.1"
        "dependency2": "~1.0.1"
        "dependency3": "~1.0.1"
        "dependency4": "~1.0.1"
    },
    "overrides": {
        // Muli allows one normalize definition to span multiple dependencies
        // NOTE: This is first one in wins for the multi list and will always
        // defer to the overrides.
        "normalizeMulti": [
            {
                "dependencies": ["dependency1", "dependency2"],
                "normalize": {
                    "img": ["*.jpeg", "*.png", "*.jpg"],
                    "font": ["*.ttf", "*.woff2"]
                }
            },
            {
                "dependencies": ["dependency2", "dependency3"],
                "normalize": {
                    // Note since dependency3 defines js, it won't get this definition
                    "js": ["*.js", "*.less"],
                }
            },
            {
                "dependencies": ["dependency2"],
                "normalize": {
                    // Note since dependency2 already had js defined by the multi, it won't get this definition
                    "js": ["*.*"],
                }
            }
        ],
        // Implicitly normalizes this file by file extension 'dependency1/js/some.js'
        "dependency1": {
            "main": "some.js"
        },
        // Implicitly organized into 'dependency2/js/some.js' 'dependency2/js/some.js'
        "dependency2": {
            "main": ["some.js", "some.css"]
        },
        // Explicitly organized into 'dependency3/js/some.js', 'dependency3/css/some.ext', 'dependency3/css/some.css'
        "dependency3": {
            "main": ["some.js", "some.ext", "some.css"],
            "normalize": {
                "js": "*.js",
                "css": ["*.ext", "*.css"]
            }
        } // dependency4 is implicitly organized into 'dependency4/<ext>/<file>
    }
}

Note: Comments are not valid JSON, so if you're copying this, you'll need to remove them.

API

bowerNormalize(options)

options.basePath

Type: string Default: process.cwd()

Path to search for the bower.json file in.

options.bowerJson

Type: string Default: ./bower.json

Path to bower.json that overrides will come from. This should be relative to options.BasePath.

options.flatten

Type: boolean Default: false

Option to remove the component level folders. This would turn /lib/jquery/js/jquery.js into /lib/js/jquery.js.

Note: If your components have files with the same name then only one of them will be included in the results.

options.typeTop

Type: boolean Default: false

Option to put the type folder on top of the hierarchy. This would turn /lib/jquery/js/jquery.js into /lib/js/jquery/jquery.js.

options.checkPath

Type: boolean Default: false

This option allows a multi-level path on the normalization destination. This allows matching similar to the following:

 "dependency7": {
      "main": ["some.js", "some/other.js"],
      "normalize": {
        "js": "*.js",
        "js/some": "**/some/*.js"
      }
 }

Note: This will not work in conjunction with the flatten option.

Frequently Asked Questions

Unexpected folder normalization

Be aware of your JSON keys of the normalize property of your bower.json.
Only unique JSON keys could be parsed correctly into your expected destination folder structure.

Example

This could lead to unexpected normalization

"normalize": {
  ".": "**/*.scss",
  ".": "**/*.js"
}

The right expression should be

"normalize": {
  ".": ["**/*.scss", "**/*.js"]
}

License

MIT © Myles Bostwick




鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap