-
-
Save delikat/d50cf9c8bce8b8f469a8eaacab170ac3 to your computer and use it in GitHub Desktop.
| const withLess = require('@zeit/next-less') | |
| const withTypescript = require('@zeit/next-typescript') | |
| const resolve = require('resolve') | |
| module.exports = withTypescript(withLess({ | |
| lessLoaderOptions: { | |
| javascriptEnabled: true, | |
| // theme antd here | |
| modifyVars: {'@primary-color': '#1Dd57A'} | |
| }, | |
| webpack: (config, { defaultLoaders, dir, isServer }) => { | |
| defaultLoaders.babel.options.plugins.push(['import', { | |
| 'libraryName': 'antd', | |
| 'style': true | |
| }]) | |
| config.externals = [] | |
| if (isServer) { | |
| config.externals.push((context, request, callback) => { | |
| resolve(request, { basedir: dir, preserveSymlinks: true }, (err, res) => { | |
| if (err) { | |
| return callback() | |
| } | |
| // exclude webpack itself and antd from externals | |
| if (res.match(/node_modules[/\\].*\.js/) && !res.match(/node_modules[/\\]webpack/) && !res.match(/node_modules[/\\]antd/)) { | |
| return callback(null, `commonjs ${request}`) | |
| } | |
| callback() | |
| }) | |
| }) | |
| } | |
| return config | |
| }, | |
| })) |
@delikat: this module return -> TypeError: Cannot read property 'push' of undefined, can you help me or list the dependencies need for this work? thanks!!
@cristopherDev this error is caused by plugins of defaultLoaders.babel.options is undefined.
I did a check and find that it exists in next 5.0.0, but not 6.
@delikat this is pretty awesome. Thank you for this!
FYI @cristopherDev Look at my fork for a version that works on next6 with a few fixes
-- fix for styled jsx (typeof require !== 'undefined' from current with-antd-less example)
-- fix for TypeError (defaultLoaders.babel.options.plugins = [])
-- fix for absolute paths (updated config.externals.push code from next.js source and readded antd)
-- I removed typescript because I am not using typescript (I assume that is ok?)

@delikat:
config.externals = []this line is the actual fix.