-
-
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.