4.0.4 • Published 4 years ago

vfe v4.0.4

Weekly downloads
3
License
MIT
Repository
github
Last release
4 years ago

vfe

npm version

vfe is a components builder with specified directory structure, base on webpack and gulp.

Usage

See example.

Installing:

npm install vfe --save

Using with gulp build tool, create a gulpfile.js file

var gulp = require('gulp')
var vfe = require('vfe')

gulp.task('default', function () {

	return vfe({
			entry: './index.js',
			libs: './lib/*.js'
		})
		.pipe(gulp.dest(dist))
})

Project folders specification:

./
 |___/c
 |   |
 |   |___/header
 |       |
 |       |____header.css
 |       |
 |       |____header.js
 |       |
 |       |____header.tpl
 |       |
 |       |___/images
 |           |____icon.png
 |
 |
 |____gulpfile.js
 |
 |____index.js
 |
 |___/lib
     |____*.js
  • c/

    	Component modules directory, default is "/c". Using `require("$componentName")` to load module,
    	such as load header module: `require("header")` will auto load header.css and header.js.
    	> **Note:** It can be replaced of custom_directory using modulesDirectories option. [See](https://github.com/switer/vfe#custom-modules-directory)
  • lib/

    	Non-modularized js will concat with components' bundle file.
  • index.js

    	Components entry js.

Command line

Install vfe command line tool:

npm install vfe-cli -g

Run default build task

vfe

Start develop watcher

vfe start
## aliase
vfe s

Note: Start command support run with another task name, such as vfe start sometask, only if task name is start-sometask.

Releasing for production

vfe release
## aliase
vfe r

Note: Release command support run with another task name, such as vfe release sometask, only if task name is release-sometask.

模块引用规则

  • require("$name")

    	`"/$components_modules/$name/$name.js"` 的简写,一级目录同名规则
  • require("$dir/$name")

    	`"/$components_modules/$dir/$name/$name.js"` 的简写,二级目录同名规则
  • require("$dir/$sub/$name")

    "/$components_modules/$dir/$sub/$name/$name.js" 的简写,三级目录同名规则

  • require("/$components_modules/$name")

    	`"/$components_modules/$name/$name.js"`  的简写,一级目录同名规则&绝对路径
  • require("/$components_modules/$dir/$name")

    "/$components_modules/$dir/$name/$name.js" 的简写,二级目录同名规则&绝对路径

  • require("/$components_modules/$dir/$sub/$name")

    "/$components_modules/$dir/$sub/$name/$name.js" 的简写,三级目录同名规则&绝对路径

  • require("./$name.tpl")

    	加载HTML模板作为渲染方法

Custom modules directory

vfe({
	entry: './index.js',
	libs: './lib/*.js',
	modulesDirectories: ['c', 'custom_modules']
})

If you don't want use "/c" as component modules directory, overwrite it:

vfe({
	modulesDirectories: ['components'] // use "/components" as modules directory
})

API

  • vfe(options)

    	`options` also is webpack's options. `vfe` only options:
    
    	**options**
    	* `name` output filename without extension.
    	* `hash` enable/disable using output, default true
    	* `minify` enable/disable compress css/js, default true
    	* `rule`  enable/disable require rule transform, default true
    	* `vfePlugins`
    
    		- **extractText** Custom options for [extract-text-webpack-plugin](https://github.com/webpack/extract-text-webpack-plugin).
    
    	* `vfeLoaders` configuration for build in loaders, include:
    
    		- **tpl** default enable, set false to disable
    		- **css** default enable, set false to disable
    		- **less** default `disable`, pass true/object to enable
    		- **image** default enable, set false to disable
    
    	For example:
    
    	```js
    		vfe({
    			// ...
    	    	vfeLoaders: {
    	    		tpl: false, // disable html-loader for *.tpl
    	    		css: {
    					options: {
    						publicPath: '../'
    					}
    				},
    				less: {
    					test: /\.(ls|less)$/,
    					options: {
    						publicPath: '../'
    					}
    				},
    				image: {
    					loader: 'file-loader?name=images/[name]_[hash:6].[ext]'
    				}
    	    	}
    	    	// ...
    		})
    	```
  • vfe.bundle(src, options)

    	**options**
    	* `name` output filename without extension
    	* `hash` enable/disable using output, default true
    	* `minify` enable/disable compress css/js, default true
    	* `concats` those files will be concat directly without minify
  • vfe.HASH_LENGTH

    	Vfe default output name's hash-length
  • vfe.util

    	* `once( handler(next) )` run in once the the same time, run next after done, no queue

Expose modules

Using gulp module of vfe without require, such as:

vfe(options)
	.pipe(vfe.if())
	.pipe(vfe.rename)
Modulename
ifgulp-if
hashgulp-hash
filtergulp-filter
mergemerge2
renamegulp-rename
cleangulp-rimraf
concatgulp-concat
uglifygulp-uglify
multipipemultipipe
webpackwebpack
ExtractTextPluginextract-text-webpack-plugin

Configure

  • Override vfe's loader config
{
	vfeLoaders: {
		tpl: {},   // html-loader, default match: *.tpl
		css: {},   // css-loader,  default match: *.css
		image: {}, // file-loader, default match: png|jpg|gif|jpeg|webp
	}
}
  • WebPack Using as vfe(options) , options will be passed through to webpack function.

License

MIT.

4.0.4

4 years ago

4.0.3

5 years ago

4.0.2

5 years ago

4.0.1

5 years ago

4.0.0

5 years ago

2.1.13

6 years ago

2.1.12

6 years ago

2.1.11

6 years ago

2.1.10

6 years ago

1.4.4

6 years ago

2.1.9

7 years ago

2.1.8

7 years ago

2.1.7

7 years ago

2.1.6

8 years ago

2.1.5

8 years ago

2.1.4

8 years ago

2.1.3

8 years ago

2.1.2

8 years ago

2.1.1

8 years ago

2.1.0

8 years ago

2.0.9

8 years ago

2.0.8

8 years ago

2.0.7

8 years ago

2.0.6

8 years ago

2.0.5

8 years ago

2.0.4

8 years ago

2.0.3

8 years ago

2.0.2

8 years ago

2.0.1

8 years ago

2.0.0

8 years ago

1.4.3

8 years ago

1.4.2

8 years ago

1.4.1

8 years ago

1.4.0

8 years ago

1.3.19

8 years ago

1.3.18

8 years ago

1.3.17

8 years ago

1.3.16

8 years ago

1.3.15

8 years ago

1.3.14

8 years ago

1.3.13

8 years ago

1.3.12

8 years ago

1.3.11

8 years ago

1.3.10

8 years ago

1.3.9

8 years ago

1.3.8

8 years ago

1.3.7

9 years ago

1.3.6

9 years ago

1.3.5

9 years ago

1.3.4

9 years ago

1.3.3

9 years ago

1.3.2

9 years ago

1.3.1

9 years ago

1.3.0

9 years ago

1.2.6

9 years ago

1.2.5

9 years ago

1.2.4

9 years ago

1.2.2

9 years ago

1.2.1

9 years ago

1.2.0

9 years ago

1.1.12

9 years ago

1.1.10

9 years ago

1.1.9

9 years ago

1.1.8

9 years ago

1.1.7

9 years ago

1.1.6

9 years ago

1.1.5

9 years ago

1.1.2

9 years ago