Transport javascript into cmd.
主要是想利用cdn combo,让require.async的依赖提前分析出来,combo拉取减少http请求。 先随便写点介绍好了,改了几个点
- moduleDependencies 改成递归查到底,比如a依赖b,b依赖c,c依赖d,moduleDependencies(a)会返回[b,c,d];
- 增加了
async
option,require.async
的依赖会被提前,比如还是a依赖b,b依赖c,c依赖d,那么require.async('a', function(a){})
会改成require.async(['a','b','c','d'], function(){(function(a){}).apply(this, [].slice.call(arguments, 0, 1));})
- 增加了
ignoreNotCmd
, 非cmd模块会直接跳过,而不会终止任务 - 增加了
ignoreNotExistFile
, 本地不存在的模块会直接跳过,而不会中止任务(比如http://外站的模块)
- 安装
grunt
- 把这个项目拷到
node_modules
下 npm install
安装依赖(因为我改了cmd-util
这个模块,所以我把这个模块直接放在本项目的node_modules
下)- 和其他的grunt项目一样写
Gruntfile.js
当debug开启的时候,生成的-debug.js
里require.async
里的文件不是用的-debug.js
后缀,有空再改
This plugin requires Grunt ~0.4.1
If you haven't used Grunt before, be sure to check out the Getting Started guide, as it explains how to create a Gruntfile as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:
npm install grunt-cmd-transport --save-dev
Once the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:
grunt.loadNpmTasks('grunt-cmd-transport');
In your project's Gruntfile, add a section named cmd_transport
to the data object passed into grunt.initConfig()
.
grunt.initConfig({
transport: {
options: {
// Task-specific options go here.
},
your_target: {
// Target-specific file lists and/or options go here.
},
},
})
Type: Array
Default value: ['sea-modules']
Where are the modules in the sea.
Type: String
Default value: ""
Prepend idleading to generate the id of the module.
Type: Object
Default value: {}
Alias of modules.
Type: Boolean
Default value: true
Create a debugfile or not.
Type: Object
Options for handlebars compiler.
Configure handlebars ID:
options: {
handlebars: {
id: 'handlebars'
}
}
Type: Object
Uglify prettifier, you really don't have to change this value.
Transport a specific filetype with the right parser.
You can write your own parsers, for example coffeeParser
:
options: {
parsers: {
'.coffee': [coffeeParser]
}
}
Sorry for the missing documentation on how to write a parser.
Gruntfile use default options.
grunt.initConfig({
transport: {
target_name: {
files: [{
cwd: 'src',
src: '**/*',
dest: 'dist'
}]
}
}
});
In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using Grunt.
Aug 2st, 2013 0.2.11
don't resolve text!path/to/some.xx
Jul 23st, 2013 0.2.10
support id/deps sepecified
Jul 1st, 2013 0.2.9
fix deps duplicate
Jun 27th, 2013 0.2.8
- improve parsing css
- add testcase
Jun 26th, 2013 0.2.7
- improve log
- remove .js extname in dependencies
- add styleBox option
Jun 19th, 2013 0.2.6
Show parsing JS error log.
Jun 17th, 2013 0.2.5
Handlebars ID configurable.
Bugfix for not showing JS parse error.
May 28th, 2013 0.2.4
Use a specified version of Handlebars.
May 6th, 2013 `0.2.3
Don't stop the process when the file not exists.
April 25th, 2013 0.2.2
Fix on filter id.
April 15th, 2013 0.2.1
Restore tplParser.
April 11th, 2013 0.2.0
Changed the option configuration.
April 10th, 2013 0.1.3
Upgrade dependencies.
April 9th, 2013 0.1.2
Bugfix for parsing nested relative dependencies.
April 1st, 2013 0.1.1
Template process on source data.
April 1st, 2013 0.1.0
First version.