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.

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'.
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.
npm install pg-minify-webpack-loader
yarn add pg-minify-webpack-loader
pnpm add pg-minify-webpack-loader

Imports and minifies a SQL file via webpack loader. Shows webpack config, SQL input, and usage.

// 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'