Skip to content

Instantly share code, notes, and snippets.

@goodmind
Created March 29, 2018 14:31
Show Gist options
  • Save goodmind/2c5d5a3c83ab8c8f77330ce260e0014e to your computer and use it in GitHub Desktop.
Save goodmind/2c5d5a3c83ab8c8f77330ce260e0014e to your computer and use it in GitHub Desktop.
const { resolve } = require('path')
const source = resolve(process.cwd(), 'src')
const web = resolve(process.cwd(), 'node_modules/@treact/web')
const webSource = resolve(web, 'src')
const tsExtensions = (platform, defaults) => [
...defaults,
`.${platform}.ts`,
'.native.ts',
'.ts',
`.${platform}.tsx`,
'.native.tsx',
'.tsx',
]
module.exports = ({ platform }, defaults) => {
const config = {
entry: `./src/index.ts`,
resolve: {
...defaults.resolve,
extensions: tsExtensions(platform, defaults.resolve.extensions),
alias: {
...defaults.resolve.alias,
'react-native': resolve(process.cwd(), 'node_modules/react-native'),
'@treact/web': web,
components: resolve(source, 'components'),
},
modules: [
webSource,
resolve(webSource, 'app'),
resolve(webSource, 'app', 'store'),
'node_modules',
],
},
module: {
...defaults.module,
rules: [
...defaults.module.rules,
{
test: /\.tsx?$/,
exclude: /node_modules/,
use: [
'babel-loader',
{ loader: 'ts-loader', options: { transpileOnly: true } },
],
},
],
},
}
config.module.rules.forEach(rule => {
if (rule.test && rule.test.source.includes('js')) {
rule.exclude = /node_modules\/(?!react|@expo|pretty-format|haul|glamorous-native)/
}
})
return config
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment