En mi proyecto NextJS, uso yarn como administrador de paquetes y decidí usar yarn link para importar alias/importaciones absolutas. Esta es una característica interesante de yarn y la forma recomendada de usar alias si usa yarn. Sin embargo, después de implementarlo, mi secuencia de comandos de creación de imágenes de Docker se rompió. La creación de la imagen falla en el paso 6, que es la compilación real. Todo funciona muy bien si ejecuto yarn dev o yarn build , pero Docker no parece entender que estoy usando alias. Aquí está el script que ejecuté las salidas:
Scripts: docker build --pull --rm -f dockerfile -t my-ui . && docker run -d --name my-ui -p 80:80 my-ui
Salidas:
=> CACHED [builder 1/6] FROM docker.io/library/node:10-alpine@sha256:dc98dac24efd4254f75976c40bce46944697a110d06ce7fa47e726847 0.0s => [internal] load build context 4.7s => => transferring context: 2.46MB 4.6s => [builder 2/6] COPY package.json yarn.lock ./ 0.1s => [builder 3/6] RUN yarn install --ignore-engines && mkdir /my-ui && mv ./node_modules ./my-ui 364.1s => [builder 4/6] WORKDIR /my-ui 0.0s => [builder 5/6] COPY . . 15.2s => ERROR [builder 6/6] RUN yarn run build El error que recibo es el siguiente: Type error: Cannot find module 'style/icons/More' or its corresponding type declarations.
Esto ocurre justo en el primer componente del proyecto. Busqué y no encontré nada en yarn-link y docker. ¿Cómo hago para que Docker entienda que style/* es un alias y pueda encontrar los módulos correspondientes?
webpack usar el yarn link en este caso, ya que debe usarse solo para desarrollo y, en su lugar, puede usar el alias del paquete web. https://teselagen.com/blog/a-better-alternative-to-npm-yarn-link-for-front-end