1. Introducción al paquete de parches
paquete de parches dirección npm
paquete de parches documentación de github
npm i patch-package
Si no necesita ejecutar npm en producción (por ejemplo, si está creando una interfaz web, puede usar --save dev)
1.2 Cómo usar
Para hacer un parche,
primero cambie un archivo para un paquete específico en la carpeta node_modules, luego ejecute
yarn patch-package package-name
o use npx (npm > 5.2)
npx patch-package package-name
nombre-paquete coincide con el nombre del paquete que se está cambiando;
Si es la primera vez que usa el paquete de parches, se creará una carpeta llamada parches en el directorio raíz de la aplicación. Dentro habrá un archivo llamado algo así como nombre del paquete+0.44.0.patch, que es la diferencia entre el nombre del paquete antiguo y la versión fija. Envíe esto para compartir la corrección con su equipo.
opcional | describir |
---|---|
–crear-problema | Para los paquetes cuyo código fuente está alojado en GitHub, esta opción abre un navegador web con problemas de borrador basados en diferencias. |
–usar-hilo | De forma predeterminada, los paquetes de parches verifican si usar npm o yarn según el archivo de bloqueo que tengan. Si tiene ambos, npm se usa de forma predeterminada. Establezca esta opción para anular ese valor predeterminado y siempre use hilo. |
–excluir < expresión regular > | Las rutas que coinciden con la expresión regular se ignoran al crear archivos de parche. Las rutas son relativas al directorio raíz del paquete que se está parcheando. Predeterminado: paquete\.json$ |
–include < expresión regular > | Solo se tienen en cuenta las rutas que coinciden con la expresión regular al crear archivos de parche. Las rutas son relativas al directorio raíz del paquete que se está parcheando. Valores predeterminados:*. |
–filtrado de ruta de acceso sensible a mayúsculas y minúsculas | Haga que las expresiones regulares utilizadas en los filtros --include o --exclude distingan entre mayúsculas y minúsculas. |
–parche-dir | Especifica el nombre del directorio donde se colocarán los archivos de revisión. |
Paquetes anidados
Si intenta parchear un paquete en un lugar específico como: node_modules/package/node_modules/another package, simplemente coloque un / entre el nombre del paquete:
npx patch-package package/another-package
También funciona con paquetes con ámbito.
npx patch-package @my/package/@my/other-package
2. Modifique la ruta de [hash].worker.js después de empaquetar vue-pdf
Nota: La versión de vue-pdf en este artículo es ^4.3.0; la
ruta de empaquetado predeterminada de [hash].worker.js en el complemento vue-pdf está en el directorio raíz dist. Debido al sistema de implementación del proyecto, [ hash].worker.js en el directorio dist/static/js.
2.1 Modifique el archivo
Ingrese al directorio node_modules/worker-loader/dist/index.js para encontrar
const filename = _loaderUtils2.default.interpolateName(this, options.name || '[hash].worker.js', {
…… });
cambie a
const filename = _loaderUtils2.default.interpolateName(this, options.name || 'static/js/[hash].worker.js', {
…… });
2.2 Instalar el complemento
npm i patch-package --save-dev
npm i postinstall-postinstall --save-dev
2.3 Crear un parche
npx patch-package worker-loader
Después de la ejecución, se creará un archivo llamado worker-loader+2.0.0.patch en el directorio de parches en el directorio raíz del proyecto. Después de enviar el archivo del parche, el parche se puede aplicar más tarde.
2.4 Agregar comando
Agregue "postinstall": "patch-package" a las secuencias de comandos de package.json, y cuando se ejecute el comando npm install o yarn install más tarde, el paquete dependiente se parcheará automáticamente.
"scripts": {
"postinstall": "patch-package"
}
2.5 Precauciones
- La versión del paquete dependiente que se va a modificar es preferiblemente fija, es decir, la versión no se actualizará automáticamente, para evitar la falla del paquete de parches después de la actualización automática, de modo que la falla del paquete afecte la función original;
- Los estudiantes de desarrollo colaborativo necesitan reinstalar las dependencias;