优化 RequireJS 项目(合并与压缩)- 优化器(Optimizer)

最近在使用js开发项目,用到了requirejs,到后面会发现好多的js文件要加载,于是找到了优化js的方法,就是使用requirejs自带的Optimizer优化器。

具体操作如下:

前提是你已经安装了nodejs:

0.安装requirejs

1
sudo cnpm install requirejs -g / cnpm install requirejs -g / npm install requirejs -g /sudo npm install requirejs -g

1.构建一个配置文件(相对于执行文件夹)并包含指定的参数,build.js

2.编写build.js,内容如下(仅供参考):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
({
appDir: './',
baseUrl: './',
dir: './dist',
modules: [
{
name: 'main'
}
],
fileExclusionRegExp: /^(r|build)\.js$/,
optimizeCss: 'standard',
removeCombined: true,
paths: {
jquery: 'vendor/jquery/dist/jquery.min',
director: 'vendor/director/build/director.min',
highcharts: 'vendor/highcharts/highcharts',
react: 'vendor/react/react.min',
reactAddons: 'vendor/react/react-with-addons.min',
JSXTransformer: 'vendor/react/JSXTransformer',
cookieStorage: 'vendor/cookie-storage/dist/cookie-storage',
json2: 'vendor/json/json2',
xdate: 'vendor/xdate/src/xdate',
moment: 'vendor/moment/min/moment.min',
jPages: 'vendor/jPages/js/jPages',
numberFormat: 'vendor/number-format.js/lib/format.min',
bootstrap:'vendor/bootstrap/dist/js/bootstrap.min',
datetimepicker:'vendor/bootstrap-datetimepicker/js/bootstrap-datetimepicker',
datetimepickerLanguage:'vendor/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.zh-CN',
fancybox:'vendor/fancybox/source/jquery.fancybox.pack',
async:'vendor/async/lib/async'
},
shim: {
'highcharts': {
'deps': ['jquery'],
'exports': 'Highcharts' // Still gotta make this available //使用全局的Highcharts做为模块名称
},
'datetimepickerLanguage':{//因datetimepickerLanguage依赖datetimepicker,所以次代码是优先加载datetimepicker
'deps':['datetimepicker']
},
'datetimepicker':{
'deps':['css!vendor/bootstrap-datetimepicker/css/bootstrap-datetimepicker.min']
},
'bootstrap':{
'deps':['jquery']
},
'fancybox':{
'deps':[
'jquery',
'css!vendor/fancybox/source/jquery.fancybox.css'
]
},
'async':{
'deps':[
'vendor/async/deps/nodeunit',
'css!vendor/async/deps/nodeunit.css'
]
}
},
map: {
'*': {
'css': 'vendor/require-css/css'
}
}
})

3.执行命令

1
r.js -o build.js