pg-minify-webpack-loader
raw JSON → 0.3.0 verified Sat May 09 auth: no javascript
Webpack loader that imports SQL files and optionally minifies them using pg-minify. Current version 0.3.0 (stable, last released 2018). Allows importing .sql files directly into webpack bundles with ES6 or CommonJS modules and configurable compression. Useful for Node.js projects using PostgreSQL, as a replacement for raw-loader.
Common errors
error Module not found: Error: Can't resolve './file.sql' in ... ↓
cause Missing '.sql' extension in resolve.extensions.
fix
Add resolve.extensions: ['.sql'] to webpack config.
error TypeError: Cannot read property 'default' of undefined ↓
cause Using CommonJS require without .default when module='es6'.
fix
Use require('./file.sql').default or set module:'commonjs'.
error Cannot find module 'pg-minify' ↓
cause pg-minify is a peer dependency not automatically installed.
fix
Run 'npm install --save-dev pg-minify'.
Warnings
gotcha resolve.extensions must include '.sql' otherwise webpack cannot resolve SQL imports. ↓
fix Add '.sql' to resolve.extensions in webpack config.
gotcha When module='es6' (default), CommonJS require returns an object with .default property. ↓
fix Use require('./file.sql').default or set module:'commonjs'.
gotcha TypeScript users must declare a module for .sql files to avoid type errors. ↓
fix Add declare module '*.sql' { var _: string; export default _; } in a .d.ts file.
deprecated Using 'loader' key instead of 'use' is deprecated in webpack 4+. ↓
fix Use 'use' property in rules.
Install
npm install pg-minify-webpack-loader yarn add pg-minify-webpack-loader pnpm add pg-minify-webpack-loader Imports
- default export (string) wrong
const sql = require('./file.sql');correctimport sql from './file.sql'; - CommonJS require with default wrong
const sql = require('./file.sql');correctconst sql = require('./file.sql').default; - TypeScript module declaration
declare module '*.sql' { var _: string; export default _; }
Quickstart
// webpack.config.js
module.exports = {
module: {
rules: [
{
test: /\.sql$/,
use: 'pg-minify-webpack-loader'
}
]
},
resolve: {
extensions: ['.sql']
}
};
// query.sql
SELECT * FROM users WHERE id = $1;
// index.js
import query from './query.sql';
console.log(query); // 'SELECT * FROM users WHERE id=$1'