100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 【angularjs学习笔记】angularjs项目使用gulp自动化构建及压缩打包

【angularjs学习笔记】angularjs项目使用gulp自动化构建及压缩打包

时间:2022-02-22 11:04:51

相关推荐

【angularjs学习笔记】angularjs项目使用gulp自动化构建及压缩打包

目标

一键安装项目所有的依赖模块一键安装项目所有的依赖库代码检查确保严格语法正确能将angularjs的html装换成js模块并且压缩到js文件中将所有css文件合并压缩将所有的js文件合并压缩动态引入资源文件拥有开发环境和生产环境两种打包方式

工具

npm基于node的包管理器gulp基于node文件流的构建系统 bower是Web开发中的一个前端文件包管理器

实现过程

一键安装项目所有的依赖模块

创建项目使用命令(项目目录下)

npm init//生成package.json{"name": "leason","version": "1.0.0","description": "test for angular and gulp and unit testing","main": "gulpfile.js","dependencies": {},"devDependencies": {},"scripts": {"test": "echo \"Error: no test specified\" && exit 1"},"repository": {},"keywords": ["leason"],"author": "leason","license": "ISC","bugs": {},}

npm安装依赖模块采用命令

npm install xxx --save//保存到dependencies(生产)npm install xxx --save-dev//保存到devDependencies(开发)

package.json中保存相应模块,项目重新部署只需要命令

npm install //安装package中所有模块

一键安装项目所有的依赖模块使用bower管理器,用法和npm类似

语法检查

npm install gulp-jshint --save-dev

//代码语法检查命令--gulp jshintvar jshint = require('gulp-jshint'); //代码检查gulp.task('jshint', function () {return gulp.src(paths.js).pipe(jshint()).pipe(jshint.reporter('default'));});

转换html为js模块

npm install gulp-angular-templatecache --save-dev

//合并html模板命令--gulp templatevar templateCache = require('gulp-angular-templatecache');gulp.task('template', function () {return gulp.src(['./templates/**/*.html','./templates/*.html']).pipe(templateCache({module: 'templates'})).pipe(gulp.dest('./js'))});

将所有css文件合并压缩

npm install gulp-cssmin --save-dev

//合并压缩css命令--gulp deployCSSvar cssmin = require('gulp-cssmin');gulp.task('deployCSS', function() {return gulp.src(paths.css).pipe(cssmin()).pipe(concat('all.css')).pipe(gulp.dest('./build'));});

将所有js文件合并压缩

npm install gulp-uglify --save-dev//压缩npm install gulp-concat --save-dev//合并npm install gulp-sourcemapsy --save-dev//处理 JavaScript 时生成 SourceMapnpm install gulp-strip-debug --save-dev//去除打印

//测试生产两种js压缩命令--生产gulp js --prod测试gulp js --devgulp.task('js', function(type) {console.log(type);if (type == 'dev') { // devreturn gulp.src(paths.js).pipe(concat('all.js')).pipe(gulp.dest('./build'));} else { // prodreturn gulp.src(paths.js).pipe(sourcemaps.init()).pipe(stripDebug()).pipe(uglify()).pipe(concat('all.min.js')).pipe(sourcemaps.write()).pipe(gulp.dest('./build'));}});

根据现有文件想index中引入

npm install gulp-inject --save-dev

index.html中标识写入的位置如:

<!doctype html><html><head><meta charset="utf-8"><title ng-bind="headTitle"></title><meta content="text/html; charset=utf-8" http-equiv="Content-Type"/><!-- bower:css --><!-- endinject --><!-- inject:css --><link rel="stylesheet" href="build/all.css"><!-- endinject --><!-- bower:js --><!-- endinject --><!-- inject:js --><script src="build/all.min.js"></script><!-- endinject --></head><body ng-app="starter"><div ui-view></div></body></html>

开发环境

//dev资源引用命令--gulp devIndexgulp.task('devIndex', ['clean', 'jshint'], function () {// It's not necessary to read the files (will speed up things), we're only after their paths:return gulp.src('./index.html').pipe(inject(gulp.src(paths.js, {read: false}), {relative: true})).pipe(inject(gulp.src(paths.css, {read: false}), {relative: true}))// .pipe(inject(gulp.src(bowerFiles(), {read: false}), {name: 'bower', relative: true})).pipe(gulp.dest('./'));});

生产环境

//生产环境资源引用命令--gulp deployIndexgulp.task('deployIndex', ['clean', 'jshint', 'template', 'js', 'deployCSS'], function () {// It's not necessary to read the files (will speed up things), we're only after their paths:return gulp.src('./index.html').pipe(inject(gulp.src(paths.buildjs, {read: false}), {relative: true})).pipe(inject(gulp.src(paths.buildcss, {read: false}), {relative: true}))// .pipe(inject(gulp.src(bowerFiles(), {read: false}), {name: 'bower', relative: true})).pipe(gulp.dest('./'));});

注意点

代码混淆过会使angular的依赖注入无法识别,所以代码编写的过程中要使用严格依赖的写法。如

angularApp.config(['$routeProvider','$stateProvider','$urlRouterProvider',function($routeProvider,$stateProvider,$urlRouterProvider) {$stateProvider.state('sidebar', {url: '/sidebar',// abstract: true,templateUrl: 'templates/sidebar.html',controller: 'sidebarCtrl'})$urlRouterProvider.otherwise('/sidebar/tab1');}]);

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。