gulp打包amd工程
工程介绍:
该工程提供一系列web基础控件,按照amd模块规范进行开发(工程目录如下图所示);
src目录为控件源码及第三方包代码;
build目录为构建脚本目录,其中main.js为工程入口文件;
dist目录为源码编译后生成的目录;

任务目标:
按照入口文件(build/main.js)的配置,按依赖关系将 src/common/ 和 src/components/ 两个目录下的js源码合并压缩成一份js文件。
入口文件:
按照项目需求进入必要的控件,最终脚本将按照所需范围进行打包合并;
// 按需引入控件 require(["combo", "scrollbox", "pagination", "checkbox"]);
脚本文件:
var concat = require('gulp-concat'), // 合并js
uglify = require('gulp-uglify'), // 压缩js
rename = require('gulp-rename'), // 重命名
amdOptimize = require('amd-optimize'), // 处理amd依赖
eslint = require('gulp-eslint'); // 语法检查
// 语法检查
gulp.task('lint', () => {
return gulp.src(['../src/common/**/*.js','../src/components/**/*.js'])
.pipe(eslint())
.pipe(eslint.format()); // 把检测结果输出到console.
});
// 拷贝第三方包
gulp.task('movelib', () => {
return gulp.src('../src/lib/require/**')
.pipe(gulp.dest('../dist/lib/require'));
})
// 压缩,合并 js
gulp.task('bundle', () => {
return gulp.src([
'../src/common/base/*.js',
'../src/components/**/*.js'
]) // 需要操作的文件
.pipe(amdOptimize('main', {
paths: {
"jquery": "../src/lib/jquery/jquery",
"prototype": "../src/common/base/prototype",
"core": "../src/common/base/core",
"component": "../src/common/base/component",
"scrollbox": "../src/components/scrollbox/scrollbox",
"combo": "../src/components/combo/combo",
"pagination": "../src/components/pagination/pagination",
"checkbox":"../src/components/checkbox/checkbox"
}
})) // 处理依赖关系
.pipe(concat('main.js')) // 合并所有js到main.js
.pipe(gulp.dest('../dist/js')) // 指定输出位置
.pipe(rename({suffix: '.min'})) // 重命名压缩后的文件名
.pipe(uglify()) // 压缩
.pipe(gulp.dest('../dist/js')); // 输出
});
// 默认任务
gulp.task('default', ['lint'], () => {
gulp.start('movelib', 'bundle');
});页面开发:
index.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>index</title> </head> <body> <div class="desk"></div> <script src="lib/require/require.js" data-main="js/main.min"></script> <!--业务代码--> <script src="index-main.js"></script> </body> </html>
index-main.js
require(["main"], function() {
// 可以直接使用入口文件中引用的4个控件
});附录:
脚本中所包含的依赖如下,可添加至 package.json 文件,使用命令 npm i 进行安装。
"devDependencies": {
"amd-optimize": "^0.6.1",
"eslint": "^3.12.2",
"gulp": "^3.9.1",
"gulp-concat": "^2.6.1",
"gulp-eslint": "^3.0.1",
"gulp-rename": "^1.2.2",
"gulp-uglify": "^2.0.0"
} 相关推荐
星辰的笔记 2020-07-04
liangjielaoshi 2020-06-11
zhongweinan 2020-06-10
jiangfulai 2020-04-18
UndefineOrNull 2020-02-29
我有一只小松鼠 2020-02-29
UndefineOrNull 2020-03-01
hlihaihong 2020-02-18
UndefineOrNull 2020-02-12
yinuoqingqin 2020-01-13
星辰的笔记 2020-01-13
UndefineOrNull 2020-01-13
hlihaihong 2020-01-13
kaosini 2020-01-12
hlihaihong 2020-01-12
kaosini 2020-01-12
HSdiana 2019-12-25