dazi.91uu.net 是如何打包资源文件呢。
基本的环境准备工作如下:本节以(window 7下操作)
1、NodeJs环境安装与配置
2、gulp下载与使用
一、NodeJs环境安装与配置
关于什么是NodeJs就不详细介绍,简要说明,它就是用javascript 方式去操作系统资料的一个开发环境。是一个桥梁平台。
大家可以去官网下载最新版本的,安装后进行环境变量的配置。
下载》 NodeJs 选择左边绿的下载安装就可以
关于环境变量的配置,百度搜索很多, 点击这里去看看吧
二、gulp安装与使用
首先,gulp是基于nodejs 平台开发出来的,进行对静态资源的打包与发布的前端开发工具之一。当然也有webpack等等一些打包工具。
由于是基于nodejs 所以,我们用npm 来进行 对gulp的安装。(npm 是包管理器,现在一般安装完nodejs就会自己带上)。
npm 一般是从国外下载包,所以想快点下载的话,可以镜像切换。如何切换,点击这里《npm镜像切换》
当然还有直接使用,cnpm(这个是淘宝为国内打造的一个镜像),可以通过npm 去安装cnpm 就可以了。
nodejs开发必不可少的就是package.json(它就是用来管理,通过npm 或cnpm 下载的包与发布包的一些配置)。
所以,我们要建一个package.json包,并指明一些配置,关于它的每项配置说明大家可以自己找一下资料,很多的。
现在看一下简要package.json如下:
建好了之后,我们通过cmd 指定到package.json 这个目录 ,在命令行工具执行cnpm install 就可以安装相关的依懒包了。
那这个也是我们后面要写gulpfile.js文件做准备,其中scripts这个选项是后面我们要执行打包的命令。
为什么一定要gulpfile.js文件名,因为gulp命令自动会读取这个默认文件。
接下来创建一个gulpfile.js文件,内容如下:
var pkg = require('./package.json');
//获取参数
var argv = require('minimist')(process.argv.slice(2), {
default: {
ver: 'all'
}
})
,resourcesPatch = '你要打包的读取的目录'
,outPath = resourcesPatch+'dist/'
,outStaticPath = outPath+'目录1/'
,outTplPath = outPath+'templates/'
,staticPath = resourcesPatch+'目录1/'
//发行版本目录
,releaseDir = './' + pkg.version
,release = releaseDir
//目标木
,destDir = function(ver){
return ver ? release : function(){
return argv.rc ? 'rc' : 'dist'
}();
};
var fs = require('fs');
var path = require('path');
var merge = require('merge-stream');
var gulp = require('gulp');
var uglify = require('gulp-uglify');
var minify = require('gulp-minify-css');
var minifyhtml = require('gulp-minify-html');
var htmlreplace = require('gulp-html-replace');
//var processhtml = require('gulp-processhtml');
var concat = require('gulp-concat');
var sourcemaps = require('gulp-sourcemaps');
var rename = require('gulp-rename');
var header = require('gulp-header');
var del = require('del');
var gulpif = require('gulp-if');
var minimist = require('minimist');
var zip = require('gulp-zip');
//注释
var note = [
'/** <%= pkg.realname %>-v<%= pkg.version %> <%= pkg.license %> License By <%= pkg.homepage %> */\n <%= js %>'
,{pkg: pkg, js: ';'}
];
/*
* 读取目录文件并创建打包任务,递归读取
*/
var creatTasks = function (ops) {
var doDir=ops.doDir,type=ops.type;
var files = fs.readdirSync(doDir),tasks=[],item,dir;
for(var i=files.length-1;i>=0;i--){
if(fs.statSync(path.join(doDir, files[i])).isDirectory()){
tasks.concat(creatTasks({
doDir:doDir+files[i]+'/',
ver:ops.ver,
uirPath:ops.uirPath,
outDir:ops.outDir,
type:ops.type
}));
}else{
item=gulp.src(doDir+files[i]).pipe(type=="js"?uglify():minify({
compatibility: 'ie7'
}))
//.pipe(header.apply(null, note))//这个会影响有@charset "utf-8"; 的样式问题
.pipe(gulp.dest(ops.outDir+doDir.replace(ops.uirPath,'/')));
tasks.push(item);
};
}
return tasks;
};
var taskList = {
web_js:function(ver) {
let uirPath = staticPath +'/web/js/';
let dir = destDir(ver);
let outDir = outStaticPath +'/'+ dir+'/web/js/';
let tasks = creatTasks({
doDir:uirPath,
ver:ver,
uirPath:uirPath,
outDir:outDir,
type:'js'
});
return merge(tasks);
}
,web_css:function(ver) {
let uirPath = staticPath +'/web/css/';
let dir = destDir(ver);
let outDir = outStaticPath + dir+'/web/css/';
let tasks = creatTasks({
doDir:uirPath,
ver:ver,
uirPath:uirPath,
outDir:outDir,
type:'css'
});
return merge(tasks);
}
,common_js_modules:function(ver) {
let uirPath = staticPath +'/common/js/modules/';
let dir = destDir(ver);
let outDir = outStaticPath +dir+'/common/js/modules/';
let tasks = creatTasks({
doDir:uirPath,
ver:ver,
uirPath:uirPath,
outDir:outDir,
type:'js'
});
return merge(tasks);
}
//有些资源不打包,但是要复制到对应目录
,copy_commonJsLib:function(ver){
let uirPath = staticPath +'/common/js/lib/**/*';
let dir = destDir(ver);
let outDir = outStaticPath+ dir+'/common/js/lib/';
return gulp.src(uirPath).pipe(gulp.dest(outDir));
}
}
//添加任务
gulp.task('web_js', taskList.web_js);
gulp.task('web_css', taskList.web_css);
gulp.task('copy_webCssIcon', taskList.copy_webCssIcon);
gulp.task('copy_webImages', taskList.copy_webImages);
//清理
gulp.task('clear', function(cb) {
return del(['./'+ (argv.rc ? 'rc' : 'dist') +'/*'], cb);
});
gulp.task('clearRelease', function(cb) {
return del([outStaticPath+releaseDir,outTplPath+releaseDir], cb);
});
//这里是监控文件变动打包
gulp.task('watch',function(){
gulp.watch(staticPath+'/web/css/**/*.css',['web_css']);
gulp.watch(staticPath+'/web/js/**/*.js',['web_js']);
gulp.watch(staticPath+'/web/images/**/*.{png,jpg,gif}',['copy_webImages']);
});
//发行版 gulp
gulp.task('default', ['clearRelease'], function(){
for(var key in taskList){
taskList[key]('open');
}
});
最后大家就可以执行一下npm run build 就可以了。
相关推荐
前端构建工具,如Webpack或Gulp,会将源代码、依赖库和资源文件(如图片、字体)等整合、转换并压缩,生成浏览器可以直接执行的文件。这一过程可以包括代码转换(如Babel将ES6+语法转换为ES5)、代码分割(按需加载...
开发者可能会使用预处理器如Sass或Less来编写CSS,用Webpack或Gulp进行模块打包和自动化任务,而JavaScript可能采用React、Vue或Angular等前端框架来构建更复杂的交互逻辑。 在实际项目中,文件夹结构一般会如下所...
Vue经典面试题_227题(部分题没答案).pdf_前端面试题 MVVM 模式 MVVM 模式是 Model-View-ViewModel 的缩写,代表一种设计思想。... * syncbuild:gulp 同步并执行webpack 打包命令。 6. author:项目作者。
它采用组件化开发模式,允许开发者将UI拆分为独立、可复用的部分,提高了代码的可维护性和可读性。React的主要特点是虚拟DOM,这使得UI更新更快,性能更优。 2. **Redux**: Redux是一个状态管理库,常与React一起...
kit.css和uix-kit.js文件中+ 简单的自定义CSS和JS核心文件,方便直接用其制作网站+ 很好的跨设备响应式支持+ 独立的组件文件夹,可任意删除和增加,开发环境中自动识别组件库并进行打包+ 支持中文和英文+ 核心样式表...
kit.css和uix-kit.js文件中+ 简单的自定义CSS和JS核心文件,方便直接用其制作网站+ 很好的跨设备响应式支持+ 独立的组件文件夹,可任意删除和增加,开发环境中自动识别组件库并进行打包+ 支持中文和英文+ 核心样式表...
每个主题都有独立的文件夹,使得更换皮肤时只需要改变引用的路径。 2. **控制器逻辑**:在后台控制器中,根据用户选择或配置信息动态加载不同的主题。这可能涉及到读取数据库设置,或者处理URL参数来确定当前皮肤。...
在这个项目中,`gulp build`很可能是用来编译源代码,将React组件和其他模块通过Browserify打包成一个或多个可部署的JavaScript文件。 `npm start`或`gulp`命令通常用于启动一个本地开发服务器,如Webpack Dev ...
3. **Webpack** 或 **Gulp**:作为模块打包工具,将源代码编译、打包并优化,以便在浏览器中运行。 4. **Babel**:将现代JavaScript语法转换为兼容旧版本浏览器的ES5语法。 5. **Git**:可能用于版本控制,管理源...
PostCSS Modules 是 PostCSS 生态中的一个插件,它实现了 CSS 模块化规范,使得每个CSS文件可以作为独立的模块,通过本地作用域避免全局样式污染。 ### 2. 使用 PostCSS Modules 的好处 - **局部作用域**:每个CSS...
7. 微服务架构:如果项目规模较大,可能会采用微服务架构,将不同功能模块拆分成独立的服务。 8. 测试框架:JUnit或Mocha等,用于编写和执行单元测试,保证代码质量。 9. API文档:Swagger可能用于生成和管理API...
BEM是一种流行的前端开发命名约定,它提倡将用户界面拆分为独立的、可重用的区块(Blocks),这些区块包含元素(Elements)和修饰符(Modifiers)。这种结构使得代码更易于理解和维护,同时也增强了代码的可复用性。...
这些依赖可能包括React、React-DOM、Babel(用于转换ES6+语法到浏览器可理解的ES5)、Webpack(模块打包器)以及Gulp(自动化任务管理工具)等。 完成依赖安装后,通过运行`gulp`命令,可以启动项目。Gulp是一个...
这个项目可能还涉及到其他技术,比如使用Git进行版本控制,利用Webpack或Gulp等构建工具进行代码打包和优化,或者引入Bootstrap、jQuery等库来加速开发。如果包含Node.js后端代码,可能还有路由、数据库连接和API...
- **构建脚本**:如Grunt或Gulp文件,用于编译、压缩和打包库文件。 在实际开发中,你可以按照以下步骤使用Motion.js: 1. **引入库**:将motion.js库文件添加到HTML页面的`<head>`或`<body>`标签内。 2. **初始化...
开发者通常会在这个目录下找到`package.json`(项目配置文件)、`src`(源代码目录)、`public`(静态资源目录)等文件夹,以及`gulpfile.js`(gulp任务配置文件)。 在深入学习React-Flux启动器时,你需要理解...
7. **构建脚本**:如webpack或gulp配置,用于打包和优化代码,以便部署和发布。 8. **示例或演示**:可能包含演示如何使用ecs_repo的示例文件或目录。 对于开发者而言,理解ecs_repo的架构和功能是关键。他们需要...
在开发过程中,开发者可能使用了现代前端开发工具和框架,如Git进行版本控制,Webpack或Gulp进行模块打包,以及预处理器如Sass或Less增强CSS的功能。同时,代码可能会遵循某种代码规范,如Airbnb的JavaScript风格...
为了确保myApp的正常运行,开发者可能还使用了版本控制系统(如Git)进行协作和版本管理,以及构建工具(如Webpack或Gulp)进行资源打包和优化。测试是另一个重要的环节,单元测试(如Jest)和集成测试(如Cypress)...
6. **build** 或 **scripts** - 构建脚本目录,可能包含Webpack、Gulp或Rollup等工具的配置文件,用于编译、打包和优化组件代码。 7. **LICENSE** - 许可证文件,声明项目的开源协议。 在实际开发中,"my-...