qiniu / builder Goto Github PK
View Code? Open in Web Editor NEWLicense: Apache License 2.0
License: Apache License 2.0
RT
npm 发包之后连 repo 地址都找不到。。。
contributor 啥的也加一下啊又不亏 = =
webpack@4, 和 @babel@7.
现在 build 后的 html 没有压缩
vendor: import 'jQuery'
chunk1: $.ajax
chunk2: $.ajax
fec_common: $ajax
script: fec_common ($ is undefined)
script: vendor ($ defined here)
done
RT.
yarn 的相对优势不复存在,考虑换成 npm。
RT
现有的 dev / prod 不可能完全覆盖使用场景,经常会有诸如测试环境的 publicUrl 需要特别配置,beta 环境的某某配置需要与众不同等需求,这里收集下方案再决定怎么搞:
如 build-config.js
,使用其导出作为 build config
先排除,详情见 #6
现在支持 build-prepare.sh
,但在不使用 image 的情况下有环境兼容性问题,另外修改 build-config.json
也不方便
build-prepare.js
类似 build-prepare.sh
,不过使用 node 执行,环境兼容性更好,操作 build-config.json
也能更便利
允许配置 addon 性质的 js 作为插件,动态修改 buildConfig 对象
直接由 builder 引入并运行,实现一个 buildConfig 对象的转换函数即可
添加 cli 参数 build-config:
fec-builder build --build-config publicUrl="xxx"
这里要考虑怎么支持复杂的配置值
允许通过 cli 参数指定 build config:
fec-builder build --build-config ./build-config.beta.json
这里考虑增强 extends
,让 build-config.beta.json
可以 extends: "./build-config"
RT,现在稍微有点混乱,比如 babel 的配置会由 builder 传入,而不使用 babelrc;ts 的构建行为现在主要是 tsconfig.json 决定,而不是 builder,却会影响 builder 本身的行为;
需要整理一下,感觉还是需要放信息到外边配置文件里(比如编辑器需要读取 tsconfig.json 来决定自己的行为);但是这个配置文件的内容需要被 builder 检查或干脆由 builder 生成,不用开发者自己维护
缺少依赖导致 scss 不能正常工作
在 less, scss, stylus, csss 中添加 config
如:(参考 package.json
)
{
"engines": { "builder" : "1.3.0" }
}
可用于静态分析,提前决定 pull 的 builder 版本(如 jenkins / travis 中)。
注意考虑静态跟动态的权衡,对比 #6
build-config.json 至少有一部分内容是需要静态提供的。
有时候本地启动 https dev server 是必要的,比如后端 api 设置 cookie 可能会标志 secure,此时若 dev server 是 http 的,则 cookie 无法正确设置。
或者考虑自动将代理的 api 请求中 cookie 的 secure 标志去掉?
optVendor optCommon add in gen-pages only when env===production
RT,配置其实是在内部传过去的,但是现在用的 postcss & postcss-loader 要求在项目目录下有一个这个文件,否则会报错。
干掉它。。
利用 travis 在 release 一个 tag 时做自动发布,发布行为包括:
图片压缩功能貌似不太稳定,先默认配置不打开吧
[2018-06-22 09:49:20.943] [ERROR] FEC - generate failed
[2018-06-22 09:49:20.945] [ERROR] FEC - ./src/common/components/PlatformIcon/os_icons.png
Module build failed: Error: Command failed: /fec/node_modules/pngquant-bin/vendor/pngquant --output /tmp/5b6970ef-49bc-495f-bc6f-b2e965156891 /tmp/81115384-6e34-4b75-b67b-4c5262ce671c --quality 65-90 --speed 4
at Promise.all.then.arr (/fec/node_modules/exec-buffer/node_modules/execa/index.js:201:11)
at process._tickCallback (internal/process/next_tick.js:103:7)
@ ./src/common/components/PlatformIcon/index.tsx 9:16-41
@ ./src/vm/components/TableItems/ImageItems.tsx
@ ./src/vm/components/TableItems/index.ts
@ ./src/vm/containers/BsnList/index.tsx
@ ./src/vm/routes.ts
@ ./src/vm/index.tsx
@ ./src/routes.ts
@ ./src/index.tsx
portal 用的配置("extends": "typescript-react"
)目前没有 tree shaking 的效果,需要检查并修复
1.10.0 引入的 staticDir 逻辑:
ERROR in [copy-webpack-plugin] unable to locate '/Users/yanghanxing/code/qbox/portal-fusion/qiniu.com/fusion/static' at '/Users/yanghanxing/code/qbox/portal-fusion/qiniu.com/fusion/static'
production && { minimize: true }
经常因为它导致 builder 安装失败...
RT。有时候开发的时候需要修改 build-config 的配置(devProxy神马的),每次都要重启下 fec-builder,时间会很长,可不可以提供一个在运行时按一个什么键,然后就重新加载 build-config 的功能?(会不会快一点😂)
style-extract behavior should be configurable, as well as common-chunk-extract.
Users may want single output (javascript) file for their project.
目前默认的图片使用 file-loader
引入,在实际中应当再加上 image-webpack-loader
以压缩图片
应该是
const getStaticPath = conf => path.resolve(getDistPath(conf), conf.staticDir)
目前静态检查的错误不会出现在编译结果中,特别是 typescript 项目,希望能够支持每次 compile 时预先 lint 一边源码。
Use snapshot (of webpack config & webpack stats output) to test builder.
目前可以通过 build-prepare.sh
动态生成 build-config.json
,考虑是不是需要允许 build-config
是个 js module,export
一个 object 作为 build config,甚至允许 export 一个 promise,resolve 结果作为 build config
build config 中 pages
配置中的 entries
信息,应该支持字符串(当成仅有一项的数组)或数组。这里对字符串的支持有问题,需要提前对这个 entries
信息做处理,处理成统一的(数组)形式
beta 环境需要 soucemap 和 prod 环境不需要 soucemap
配置:
{
'/api': 'http://foobar.com'
}
应该生效为:
/api/* -> http://foobar.com/*
--PUBLIC_URL
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.