-
Couldn't load subscription status.
- Fork 167
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。请保持该方法的存在,并使用默认实现,不要修改它。