作者:zccst
参考资料:如何使用 Grunt 构建一个中型项目 #672
https://github.com/seajs/seajs/issues/672
1,构建
(1)package.json
{
"family": "test",
"version": "0.0.1",
"name": "gruntTest",
"spm": {
"alias": {
"jquery": "gallery/jquery/1.8.2/jquery",
"dialog": "dist/styles/component/dialog/src/dialog"
}
},
"devDependencies": {
"grunt": "~0.4.1"
}
}
(2)Gruntfile.js
接下来该grunt介入了,先写下通用式:
module.exports = function (grunt) {
};
由于该示例有模块依赖了css,估计你的项目现在或以后也有这种情况。
所以需要在transport的过程中对所依赖的css进行转换,以便seajs能加载一个类似这样的标签到页面中:
<link charset="utf-8" rel="stylesheet" href="../styles/component/dialog/src/dialog_css.css">
seajs在1.3.1的版本中是将css文件也包装成一个js模块,以seajs.importStyle函数包裹原css内容。
这样在执行importStyle函数时,向页面添加一个上面的link标签。
ps:在新的2.0版本中,貌似该函数已从sea.js中剥离出来,形成一个单独的插件style
为了实现上述的转换需要引入这样的代码:
var transport = require('grunt-cmd-transport');
var style = transport.style.init(grunt);
var text = transport.text.init(grunt);
var script = transport.script.init(grunt);
现在我们开始定义构建任务,先将package.json引入,后面的任务会用到其中的设置:
grunt.initConfig({
pkg : grunt.file.readJSON("package.json"),
});
(3)自定义模块的transport任务:
transport : {
options : {
paths : ['.'],
alias: '<%= pkg.spm.alias %>',
parsers : {
'.js' : [script.jsParser],
'.css' : [style.css2jsParser],
'.html' : [text.html2jsParser]
}
},
styles : {
options : {
idleading : 'dist/styles/'
},
files : [
{
cwd : 'styles',
src : '**/*',
filter : 'isFile',
dest : '.build/styles'
}
]
}
}
任务内容本身非常简单,就是将styles路径中的所有文件cwd : 'styles',src : '**/*',也就是模块dialog,提取依赖并生成到.build/styles的临时目录中去。
这个任务包含了两级的options,Target的options会覆盖外层中Task的options,先说下Task的options中的含义:
paths:模块的路径,默认的是sea-modules,如果你构建的时候出现找不的模块的话,可能就是这里出了问题。
alias:定义模块别名,这里以grunt支持的一种模板语法来从package.json引入定义:<%= pkg.spm.alias %>
parsers:定义下针对不同格式文件的转换方式,这里的设置感觉以后很可能会在插件中内置,暂时先这么设置。
紧接着看下Task中的options:
idleading:模块ID的前缀
如果您觉得本文的内容对您的学习有所帮助,您可以微信:
分享到:
相关推荐
vscode+node+npm
毕业设计node+npm+MongoDB的websocket聊天室项目源码 相关工具版本 node: 12.14.0 npm: 6.4.1 MongoDB: 5.0.3 3、启动服务器 cd chatServer npm install # 初始化数据库,初始化成功后可以看到自动创建了chat数据库 ...
基于Node+Vue+mysql的高校电竞管理系统源码+数据库,已获老师指导并通过的高分项目 项目安装 1、下载node.js 2、检查是否下载成功 node -v 3、前后端分别运行: npm install 前端代码运行 npm run dev 后端代码运行 ...
基于Node+Vue+Mogodb高校学生档案追踪系统源码+数据库,已获老师指导并通过的高分项目 项目安装 1、下载node.js 2、检查是否下载成功 node -v 3、前后端分别运行: npm install 前端代码运行 npm run serve 后端代码...
一些小的练习题【只适合小白哈】
基于node+vue+element的员工管理系统源码+数据库 数据库配置 配置数据库连接文件在server/db/db.js 数据库账号和密码要与你本地的一致 建议使用 Navicat 数据库可视化软件创建MySQL数据库:worker(与server/db/db....
使用vue-cli脚手架搭建项目 使用vue-router实现路由切换 使用vuex进行状态管理 使用axios进行数据请求 stylus和scss编写样式 联动滚动借助了vue-infinite-scroll插件和图片懒加载vue-lazyload插件 Express编写...
node.js12.22.12+npm6.14.4
项目描述:通过 nodejs+mongodb 完成一个学生成绩管理系统:1.添加功能 2.修改功能 3.删除功能 4.精确查询功能 5.模糊查询功能 6.数据分页 我的职责:利用 node 实现全栈开发 运行项目 编译方式可自行选择:vscode...
使用 grunt 构建 node.js 项目的 grunt 文件模板。 当前此模板包括以下任务: 删除输出文件夹中的文件。 编译咖啡脚本。 将其他项目文件复制到输出文件夹。 进行文本替换。 启动程序。 如何使用 安装 grunt-...
此项目为一个前后台分离的招聘的 SPA, 包括前端应用和后端应用 包括用户注册/登陆, 大神/老板列表, 实时聊天等模块 前端: 使用 React 全家桶+ES6+Webpack 等技术 后端: 使用 Node + express + mongodb + ...
让您在构建过程中使用Node.js及其库,而无需为构建系统全局安装Node / NPM 让您确保正在运行的Node和NPM的版本在每个构建环境中都相同这个插件不是做什么的? 并不是要替换Node的开发人员版本-前端开发人员仍将在...
Nuxt+Vue+Node+mysql 构建的代码,内含各种依赖包,下载后可直接运行 npm run dev 启动
(2)运行 ①安装好npm、node ②将数据库文件organization.sql导入myql数据库 ③用vscode打开项目 ④进入server文件夹: 安装依赖:npm install 启动:node server.js ⑤进入admin文件夹: 安装依赖: npm install ...
基于JavaScript+vue实现的智慧教室前端源码+项目使用说明(课程设计项目).zip 【创建】 # 进入项目目录 cd 项目文件夹 # 安装依赖 npm install # 建议不要直接使用 cnpm 安装以来,会有各种诡异的 bug。可以通过...
基于SpringBoot+mybatis+vue.js实现电影院会员管理系统源码+项目报告+项目说明(高分课设).zip 电影院会员管理系统,使用前后端分离架构开发,前端基于Vue.js+Element UI技术,后端使用springboot+mybatis实现,包含...
一个Vue+Express+Mysql的电影售票项目 项目目录 ├── film 前端页面项目文件 ├── film_admin 后台管理系统 ├── film_api 前后台接口文件 ├── db_film.sql 数据库文件 安装步骤 1. 拉取项目 #依次执行...
这是一个极简的 vue admin 管理后台。它只包含了 Element UI & axios & iconfont & permission control & lint,这些搭建后台必要的东西。 ```bash # 进入项目目录 cd 项目文件 # 安装依赖 npm install # 建议...
它前端一个作业,它能用,但不多,最主要的是没什么注释,一般人看不懂我的业务逻辑。 ``` 基于Node.js+Mysql实现的私人web云盘系统源码+运行说明(课程作业).zip基于Node.js+Mysql实现的私人web云盘系统源码+运行...
适应前后端分离开发的一款基于node快速接口简单开发脚手架(模板),集成了mysql,redis的存储,一键式配置,模块层层分离,适应小型项目的后端开发框架。 整合Node.js+express 整合MySQL5,6数据库 整合Redis缓存数据库...