Skip to content

uojo/requirejs-config-sugar

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

32 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

requirejs-config-sugar

作用:简化使用 requirejs 打包时,引用模块文件前的处理操作,参考 jQuery 打包时的处理,即项目会被打包成一个 UMD 的文件,供浏览器、Node 等场景下使用。

Getting Started

安装

npm install requirejs-config-sugar

引入模块

var rjsCfg_sugar = require("requirejs-config-sugar");

使用

根据模块名称的编译,示例如下

模块名称 模块内容 编译结果
tpl/name1 function(){} var tpl_name1 = function(){}
var/fn1 function(){} var fn1 = function(){}
text!var/tpl/name2.html html字符串... var tpl_name2 = 'html字符串...'
text!obj/name3.html html字符串... obj.name3 = 'html字符串...'
obj/name4 function(){} obj.name4 = function(){}
上方中实现的提前配置如下:
{common:{
  objectModuleDir:["obj"],
  varModuleDir:["var","tpl"],
  ...
},...}

的 obj 目录,需添加配置 objectModuleDir:["obj"]

简要示例如下:

// entry.js
define([
"core",
"fn/name1",
"var/fn1",
"text!var/tpl/name2.html",
"text!TPL/name3.html",
"TPL/name4",
], function(Fn) {
  Fn.xxx2 = tpl_name2;
  
  // 全局命名空间
  var spaceName="TPL";
  // console.log("main.complete");
  if( window[spaceName] ){
    $.extend(window[spaceName],Fn);
  }else{
    window[spaceName] = Fn;
  }
  
  return Fn;
});

// core.js
define([], function() {
  var Fn = {
    fieldname1:1,
    fieldname2:function(){
      
    }
  };
  return Fn;
});

更多写法可以通过阅读项目示例体会 test/app

其中 var、TPL、Fn ,目前均为保留字段名!

方法

config(options)

建议配置至少一条记录,options 为对象,其中包含如下参数

字段名称 作用 备注
common 通用参数设置 与 records 字段配置内容相同,只是在此配置后,在每一条记录都会生效
records 每条记录参数设置 设置对象字段请 参考
示例:
rjs_sugar.config({
  "common":{
    "name":"entry",
    "optimize":"none",
    // 自义定参数
    "speedTaskEnter":0, // 任务进入执行队列中最小间隔时间 
    "onBuildWriteAfter":function(moduleName, path, contents){
      // onBuildWrite 之后执行的回调 
      return contents;
    },
    "varModuleDir":['var'] // 通过模块名称转化为定义语法,例:var xxx = ...
    "objectModuleDir":[] // 通过模块名称转化为对象注册属性语法,例:Obj.attr = ...
  },
  "records":{
    "recordsName1":{
      "baseUrl": 'dirname1/',
      "out": 'build/file1_build.js'
    },
    "recordsName2":{
      "baseUrl": 'dirname2/',
      "out": 'build/file2_build.js'
    },
  }
});

pack(recordname, callback)

通过配置记录执行打包

参数 作用
recordName config设置的记录名称
callback 打包执行后的回调函数

示例:

rjs_sugar.optimize("gf",cbfn);

optimize(config, callback)

通过传入配置参数执行打包

参数 作用
config requirejs 打包配置,请 参考
callback 打包执行后的回调函数

示例:

rjs_sugar.optimize({
  name: 'entry',
  out: 'build.js'
},cbfn);

matchRecord( path, runPack, callback)

通过传入文件的绝对路径,获取匹配的配置记录。且可立即执行打包。

参数 作用 默认值
path 文件的绝对路径,建议使用 path.resolve() ""
runPack 立即执行打包 false
callback 打包执行后的回调函数

返回:匹配记录的名称

示例:

var recordName = rjs_sugar.matchRecord( path.resolve('./dirname1/xxx.js'), true, function(name,options){
  console.log(name); // recordsName1
  console.log(options); // { "baseUrl":'dirname1/', "out":'build/file1_build.js' }
} );
console.log( recordName ); // recordsName1

ChangeLog

0.5.0

  • 对 xxx = require(...) 的支持

0.4.0

  • 对rjs参数 findNestedDependencies 的支持

0.3.0

  • 新增自定义配置参数 varModuleDir
  • 重写内部模块解析,放弃原先内置对模板名称中 TPL、Fn 的解析。之前版本可通过配置 varModuleDir、objectModuleDir 来升级

0.2.0

  • 新增自定义配置参数 onBuildWriteAfter、objectModuleDir
  • 提示:可能不兼容之前的版本

0.1.3

  • fix matchRecord 回调执行的bug

0.1.2

  • 使用 uojo-kit 模块来替换 log,新增参数 speedTaskEnter
  • 互换 pack 与 optimize 的方法的使用

0.1.1

  • 修复回调执行
  • 将队列顺序执行更改为队列异步执行

0.0.7

  • 新增方法 matchRecord ,用于匹配记录

0.0.6

  • 修复当错误时不提示信息的问题

0.0.5

  • 修改 console.log 显示方式
  • 新增 require(TPL/xxx) 模板时,打包后的内容为 TPL.xxx = ...

0.0.4

  • 添加测试、使用实例
  • 新增 require(text!xxx...) 模板时,打包后的内容挂载方式

0.0.3

  • 添加打包成功后的消息输出

About

简化 requirejs 打包模块文件的配置

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published