Closed javaswing closed 2 years ago
你是希望自定义打包路径,然后把自定义的值放在配置中么。 设计这个参数的初衷是担心打包模式1失败,(打包模式1用到了middway配置进行打包,middway没有提供在命令里面拿去config的方式,我在vite源码里找的解析ts的方法根据路径收动解析的,担心不稳定,会因为某些原因失败) 使用打包模式2(根据路径遍历不加载配置)傻瓜式打包时,可以指定打包地址为staticFile下正确的文件夹地址。 正常情况下如果打包模式1能生效不建议指定outdir。 不过可以在配置项中定义一个配置去更改html 这样更改staticFileConfig的默认静态路径和新加的配置项是否可以满足你的需求
另外打包模式1下,命令配置应该尽可能在配置中获取,而不是通过命令参数传入,因为项目运行时无法拿到命令参数,但是可以拿到配置项。 命令参数应该作为辅助项,在比较了解规则的情况下使用,这样打包出来的结果和配置项配合使用才能成功访问对应路径代码。
你是希望自定义打包路径,然后把自定义的值放在配置中么。 设计这个参数的初衷是担心打包模式1失败,(打包模式1用到了middway配置进行打包,middway没有提供在命令里面拿去config的方式,我在vite源码里找的解析ts的方法根据路径收动解析的,担心不稳定,会因为某些原因失败) 使用打包模式2(根据路径遍历不加载配置)傻瓜式打包时,可以指定打包地址为staticFile下正确的文件夹地址。 正常情况下如果打包模式1能生效不建议指定outdir。 不过可以在配置项中定义一个配置去更改html 这样更改staticFileConfig的默认静态路径和新加的配置项是否可以满足你的需求
我当初看你的代码时就发现在了打包命令和最终的ssr运行目录不同步的问题。没有理解怎么想的,才有了现在的疑问。你的设计也可以不过最好在打包时屏蔽outdir这个设计,万一使用者没有看源代码,就被坑了。
说下另一个坑,在使用docker启用多层构建的时候如果不把view文件夹复制过去,docker直接启动不起来,对应的dockerfile如下:
# 启用多阶层构建
FROM node:14 AS build
WORKDIR /app
COPY . .
RUN npm install --registry=https://registry.npmmirror.com
RUN npm run build
FROM node:14-alpine
WORKDIR /app
COPY --from=build /app/dist ./dist
COPY --from=build /app/bootstrap.js ./
COPY --from=build /app/package*.json ./
COPY --from=build /app/public ./public
# 下面一行如果不写直接起不来,因为一旦使用了midway-view包,就必须有这个目录
COPY --from=build /app/view ./view
ENV TZ="Asia/Shanghai"
RUN npm install --production --registry=https://registry.npmmirror.com
EXPOSE 80
CMD ["npm", "run", "start"]
你是希望自定义打包路径,然后把自定义的值放在配置中么。 设计这个参数的初衷是担心打包模式1失败,(打包模式1用到了middway配置进行打包,middway没有提供在命令里面拿去config的方式,我在vite源码里找的解析ts的方法根据路径收动解析的,担心不稳定,会因为某些原因失败) 使用打包模式2(根据路径遍历不加载配置)傻瓜式打包时,可以指定打包地址为staticFile下正确的文件夹地址。 正常情况下如果打包模式1能生效不建议指定outdir。 不过可以在配置项中定义一个配置去更改html 这样更改staticFileConfig的默认静态路径和新加的配置项是否可以满足你的需求
我当初看你的代码时就发现在了打包命令和最终的ssr运行目录不同步的问题。没有理解怎么想的,才有了现在的疑问。你的设计也可以不过最好在打包时屏蔽outdir这个设计,万一使用者没有看源代码,就被坑了。
说下另一个坑,在使用docker启用多层构建的时候如果不把view文件夹复制过去,docker直接启动不起来,对应的dockerfile如下:
# 启用多阶层构建 FROM node:14 AS build WORKDIR /app COPY . . RUN npm install --registry=https://registry.npmmirror.com RUN npm run build FROM node:14-alpine WORKDIR /app COPY --from=build /app/dist ./dist COPY --from=build /app/bootstrap.js ./ COPY --from=build /app/package*.json ./ COPY --from=build /app/public ./public # 下面一行如果不写直接起不来,因为一旦使用了midway-view包,就必须有这个目录 COPY --from=build /app/view ./view ENV TZ="Asia/Shanghai" RUN npm install --production --registry=https://registry.npmmirror.com EXPOSE 80 CMD ["npm", "run", "start"]
这个校验是middway 自己对于渲染模板路径的校验, 虽然在部署环境用不到view/文件夹的内容 但是需要保留index.html 不然middway会直接校验路径不通过。
可以在config.prod.ts(生产环境配置文件)中指定模板文件夹来规避这个问题 比如
//src/config/config.prod.ts
import { MidwayConfig } from '@midwayjs/core';
import * as path from "path";
export default {
view:{
defaultViewEngine: 'viteView',
rootDir: <unknown>{
default: path.join(__dirname, '../../public/html'),
}
}
} as MidwayConfig;
我会将这个配置项放到example中去
如题,在这几天在抽时间优化该项目中发现的一些问题,不知道怎么修改合适。特意列出来希望能讨论下。
vite-view build
的相关参数,没有办法在view.ts
这个文件中获取到 说明:比如打包参数中outDir
用于设置打包生成的目录,同时这个变量必须要同步到staticFile
所托管的文件目录,否则会出打包成功,访问的时候根本找不到资源情况。我在代码里发现默认使用的是staticFile
的默认目录进行手动拼接的。 https://github.com/yuntian001/midway-vite-view/blob/055add78ea87ee35cabc01fc6d07260e326f7854/src/lib/view.ts?_pjax=%23js-repo-pjax-container%2C%20div%5Bitemtype%3D%22http%3A%2F%2Fschema.org%2FSoftwareSourceCode%22%5D%20main%2C%20%5Bdata-pjax-container%5D#L91希望能讨论下怎么解决?