-
Notifications
You must be signed in to change notification settings - Fork 171
Build
通常,一个前端项目从开发环境到线上环境,需要进行一系列的构建处理过程:Less编译、文件合并、JS压缩、添加版本信息等。EDP提供了相应的Build
工具,用于进行项目构建
。
通过以下命令,可以构建一个项目。
$ edp build
默认的构建结果输出目录
是当前目录下的output
目录。如果想要修改输出目录
,可以通过--output
或者-o
参数指定。
$ edp build --output ../myproject-dist
如果输出目录
已经存在,构建过程将不会继续。如果想要强制覆盖当前输出目录
下的内容,可以通过-f
参数。指定该参数后,构建前将清空输出目录
下所有文件,请大家小心。
$ edp build -f
默认的构建配置文件
为当前目录下的edp-build-config.js
。配置文件
是一个暴露相关指定属性和方法的node module
,可以通过--config
参数指定。
$ edp build --config my-build-conf.js
EDP的构建过程分成3步:
- 输入:读入指定的
input
目录下的所有文件,input
通过配置文件指定。 - 处理:使用配置的
processors
对所有读入的文件内容进行处理。 - 输出:将处理结果输出到
output
目录中,output
可以通过配置文件指定,也可以通过--output
参数传入。
运行edp build
时,默认使用的配置文件
为当前目录下的edp-build-config.js
。如果该文件不存在,将使用默认配置。你可以新建一个edp-build-config.js
,或者使用其他文件名,在运行命令时通过--config
参数指定。
配置文件是一个node module
,EDP在构建时将require
它,所以,配置文件后缀必须为.js
。
下面是EDP的构建默认配置。通过edp提供的项目管理功能来初始化项目
时,生成的edp-build-config.js
与此不同。
var cwd = process.cwd();
var path = require( 'path' );
exports.input = cwd;
exports.output = path.resolve( cwd, 'output' );
exports.exclude = [
'tool',
'doc',
'test',
'module.conf',
'dep/packages.manifest',
'dep/*/*/test',
'dep/*/*/doc',
'dep/*/*/demo',
'dep/*/*/tool',
'dep/*/*/*.md',
'dep/*/*/package.json',
'edp-*',
'.edpproj',
'.svn',
'.git',
'.gitignore',
'.idea',
'.project',
'Desktop.ini',
'Thumbs.db',
'.DS_Store',
'*.tmp',
'*.bak',
'*.swp',
'node_module'
];
exports.getProcessors = function () {
return [
new LessCompiler(),
new PathMapper()
];
};
exports.injectProcessor = function ( processors ) {
for ( var key in processors ) {
global[ key ] = processors[ key ];
}
};
我们建议:通过edp提供的项目管理功能来初始化项目
,在其生成的edp-build-config.js
上进行构建配置自定义。
在自定义自己的构建配置时,有下面几个东西需要了解和注意:
输入目录,{string}
,默认为当前目录
。该属性基本不需要修改。
输出目录,{string}
,默认为当前目录下的output目录
。
排除文件,{Array}
。该数组里匹配上的每一项,在构建的输入
阶段就会被排除,所以,被排除的文件也不会进入后续的处理
和输出
阶段。
数组中的每一项可以是符合minimatch规则的pattern,也可以是正则表达式。例如我只想排除到项目根目录下面的tool目录,而不是所有的tool目录,就可以这么写:
exports.exclude = [
/^tool\//,
'Thumbs.db',
'.DS_Store',
'*.tmp',
'*.bak',
'*.swp'
];
在处理输入文件的过程中,edp
默认所有的文本文件都是utf-8
编码的,如果有一些特殊编码的文件,需要在这个参数中声明,这样子才能保证输出的时候文件编码保持不变。
exports.fileEncodings = {
'src/common/img/channel-example-csv.csv': 'gbk'
}
处理器列表,{Array} function
。该方法会被EDP在构建时调用,获取构建过程的Processors。
EDP提供了许多内置Processors,基本可以满足前端项目的构建需求。你可以使用内置Processors,也可以扩展自己的Processor。我们在Build Processors文档对此进行了详细说明。
该方法用于EDP将内置的Processors注入到配置模块中,从而在配置模块里可以使用内置Processors。请保持该方法的存在,并使用默认实现,不要修改它。