`
zccst
  • 浏览: 3319950 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

基于node+npm+grunt构建一个中型项目

阅读更多
作者: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

    vscode+node+npm

    毕业设计node+npm+MongoDB的websocket聊天室项目源码,可音视频聊天,可发朋友圈

    毕业设计node+npm+MongoDB的websocket聊天室项目源码 相关工具版本 node: 12.14.0 npm: 6.4.1 MongoDB: 5.0.3 3、启动服务器 cd chatServer npm install # 初始化数据库,初始化成功后可以看到自动创建了chat数据库 ...

    twoone.rar+js+node+npm

    Node.js是一个基于Chrome V8引擎的JavaScript运行环境。它允许开发者使用JavaScript进行服务器端编程,提供了丰富的非阻塞I/O库,特别适合构建高性能的网络应用,如实时聊天应用、API服务器、流媒体服务等。Node.js...

    基于Node+Vue+mysql的高校电竞管理系统

    基于Node+Vue+mysql的高校电竞管理系统源码+数据库,已获老师指导并通过的高分项目 项目安装 1、下载node.js 2、检查是否下载成功 node -v 3、前后端分别运行: npm install 前端代码运行 npm run dev 后端代码运行 ...

    基于Node+Vue+Mogodb高校学生档案追踪系统

    基于Node+Vue+Mogodb高校学生档案追踪系统源码+数据库,已获老师指导并通过的高分项目 项目安装 1、下载node.js 2、检查是否下载成功 node -v 3、前后端分别运行: npm install 前端代码运行 npm run serve 后端代码...

    node+seajs+grunt标准资源

    **Grunt** 是一个基于任务的构建工具,由JavaScript编写,使用JSON格式的配置文件(Gruntfile.js)定义任务。Grunt有众多插件,可用于编译Sass、CoffeeScript,压缩CSS和JavaScript,合并文件,甚至自动化测试等。它...

    node.js+npm 一键安装包

    node.js+npm 一键安装包 无网状态下,便捷一键安装,含各类依赖包。

    基于node+vue+element的员工管理系统源码+数据库

    基于node+vue+element的员工管理系统源码+数据库 数据库配置 配置数据库连接文件在server/db/db.js 数据库账号和密码要与你本地的一致 建议使用 Navicat 数据库可视化软件创建MySQL数据库:worker(与server/db/db....

    基于vue全家桶+node.js+express+mysql实现的商城网站

    使用vue-cli脚手架搭建项目 使用vue-router实现路由切换 使用vuex进行状态管理 使用axios进行数据请求 stylus和scss编写样式 联动滚动借助了vue-infinite-scroll插件和图片懒加载vue-lazyload插件 Express编写...

    NODEJS+NPM+COFFEESCRIPT

    标题 "NODEJS+NPM+COFFEESCRIPT" 暗示了这个压缩包可能包含关于使用Node.js、NPM(Node Package Manager)以及CoffeeScript的教程或项目资源。以下是关于这三个核心概念的详细解释和相关知识点: Node.js: Node.js...

    6.2 Jenkins + Npm 编译js代码并部署1

    【Jenkins + Npm 编译js代码并部署】是一个自动化构建和部署前端JavaScript项目的过程,旨在提升开发效率,让研发人员只需将源代码提交到版本控制系统(如svn),剩下的编译、打包和部署工作由Jenkins自动完成,避免...

    grunt项目构建样例

    `Grunt`是一个JavaScript任务运行器,它允许开发者通过配置文件定义一系列自动化任务,如代码编译、文件压缩、单元测试等。本篇将深入探讨`Grunt`在项目构建中的应用,尤其是如何实现JavaScript和CSS文件的压缩与...

    基于node+vue+mongoose+bootstrap的学生成绩管理系统源码+数据库

    项目描述:通过 nodejs+mongodb 完成一个学生成绩管理系统:1.添加功能 2.修改功能 3.删除功能 4.精确查询功能 5.模糊查询功能 6.数据分页 我的职责:利用 node 实现全栈开发 运行项目 编译方式可自行选择:vscode...

    grunt-template-node:一个使用 grunt 构建 node.js 项目的 grunt 文件模板

    使用 grunt 构建 node.js 项目的 grunt 文件模板。 当前此模板包括以下任务: 删除输出文件夹中的文件。 编译咖啡脚本。 将其他项目文件复制到输出文件夹。 进行文本替换。 启动程序。 如何使用 安装 grunt-...

    frontend-maven-plugin:“ Maven-node-grunt-gulp-npm-node-plugin终止所有maven-node-grunt-gulp-npm-plugins。” 一个Maven插件可以在本地下载并安装Node和NPM,运行NPM install,Grunt,Gulp和/或Karma

    让您在构建过程中使用Node.js及其库,而无需为构建系统全局安装Node / NPM 让您确保正在运行的Node和NPM的版本在每个构建环境中都相同这个插件不是做什么的? 并不是要替换Node的开发人员版本-前端开发人员仍将在...

    React 全栈项目:招聘网站react-redux+redux-thunk+axios

    此项目为一个前后台分离的招聘的 SPA, 包括前端应用和后端应用 包括用户注册/登陆, 大神/老板列表, 实时聊天等模块 前端: 使用 React 全家桶+ES6+Webpack 等技术 后端: 使用 Node + express + mongodb + ...

    npm基于vite制作自己的npm包+ts超详细

    在本文中,我们将深入探讨如何使用npm,Vite和TypeScript来创建一个基于Vue3的自定义播放器项目。这个项目描述中提到的核心技术栈包括Vue.js的最新版本Vue3,Vite作为构建工具,以及TypeScript作为强大的类型系统...

    grunt-cli压缩包-0.1.13版本

    这个压缩包包含了`grunt-cli`的0.1.13版本,这是一个早期但仍然被一些项目依赖的版本。在这个版本中,除了`grunt-cli`的源代码之外,还包含了`node_modules`目录,这个目录通常存储了`grunt-cli`运行所需要的依赖库...

    基于Vue+JavaScript的古籍文字检测与识别系统源码+项目说明.zip

    基于Vue+JavaScript的古籍文字检测与识别系统源码+项目说明.zip 目前版本为 `v4.0+` 基于 `vue-cli` 进行构建 ## Build Setup ```bash # csdn下载项目 # 进入项目目录 cd vue-admin # 安装依赖 npm install # ...

    node-npm-x64

    在“node-npm-x64”环境中,我们看到包含了一个名为"node-v4.4.3-x64.msi"的文件,这表明提供的版本是Node.js v4.4.3的64位安装程序。尽管该版本相对较旧,对于初学者或者特定的老项目来说,可能仍有其适用性。然而...

Global site tag (gtag.js) - Google Analytics