YMFE / ykit

基于 Webpack 的灵活快速的打包工具,帮助稳定高效构建现代 JavaScript 应用。
https://ykit.ymfe.org/
Apache License 2.0
393 stars 56 forks source link

如何使用ykit打包到指定路径呢 #16

Closed papuaer closed 6 years ago

papuaer commented 7 years ago

试了下ykit pack不支持 -d 参数,默认打包是到项目文件夹下的dev或者prod 如果想打包到指定路径应该怎么操作? 我在config里面配置了output 但并不好用~~ ps: 打包的时候发现index.html没有一起被打包过去 不知道是不是因为没有使用HtmlWebpackPlugin

papuaer commented 7 years ago

modifyWebpackConfig: function(baseConfig) { // edit ykit's Webpack configs baseConfig.output = { filename: 'webstatic/js/[name].[chunkhash:3].js', path: path.resolve(__dirname, './web/'), publicPath: '/', chunkFilename: 'webstatic/js/[id].[chunkhash:6].js' }; console.log(baseConfig); return baseConfig; }

我按照上面的配置 打印出来的baseConfig.output已经生效 但实际打包的路径还是在dev里 求解~~~

yuhaoju commented 7 years ago

@papuaer 这个是由于某些历史版本的原因,改了 output 这个配置的形式。

在 ykit 中 output 是一个对象,它的属性是 ykit 打包的三种环境:

每个环境对象下面才是 webpack 的输出配置,如你可以这样配置 ykit pack 的输出路径:

config.output.dev.path = 'dist';

这个主要是为了方便不同环境下的配置可以集中到 ykit.js 本身,但是对于刚开始接触 ykit 的来说并不是非常友好。

在最新版本的 ykit 中这个配置已经做了更改,你可以安装 next 版本,如:

sudo npm i ykit@next -g

并使用正常的配置:

config.output.path = 'dist';
papuaer commented 7 years ago

先吐个槽:其实这里面隐含的问题还挺多的, 按上面修改了配置以后,发现两个问题:

  1. 原index.html里引用的静态资源路径(./prd/script/index.js ./prd/style/index.css)404了,按照文档里说的 prd目录对应的src目录 我根据src的目录重新设置了静态资源 依然不行

  2. output中添加了 filename: 'webstatic/js/[name].[chunkhash:3].js'这样的放缓存hash, 这个hash也一直没有替换原有的文件。

我是觉得mock的功能会比较好用才坚持的,奈何到现在还没用到mock 官方给的例子是否可以健全一点 不要简单至此,至少包含线下开发(mock) 联调(dev) 线上(个性化发布路径 hash less编译 一堆压缩等等)各个环境

yuhaoju commented 7 years ago

两个问题我理解都是改了 output 配置之后 HTML 访问不到资源?这是因为如果改了 output,那么资源输出路径就会改变,因此也要改 HTML 中引用的路径。比如从 output.path 改为了 dist,那么 html 中引用的路径也要把 prd 改为 dist

关于例子的问题,可以考虑集中添加一些 example。

关于 mock 的例子可以先看看这个:https://github.com/roscoe054/ykit-starter-mock

yangchongduo commented 6 years ago

output.local: 起 server 时的输出配置 本地服务我改了路径了 html 也该了,还是不行 config.output.local.path = 'app/public';