mirror of
https://github.com/terribleplan/next.js.git
synced 2024-01-19 02:48:18 +00:00
15bb1c5e79
- Replaces taskr-babel with taskr-typescript for the `next` package - Makes sure Node 8+ is used, no unneeded transpilation - Compile Next.js client side files through babel the same way pages are - Compile Next.js client side files to esmodules, not commonjs, so that tree shaking works. - Move error-debug.js out of next-server as it's only used/require in development - Drop ansi-html as dependency from next-server - Make next/link esmodule (for tree-shaking) - Make next/router esmodule (for tree-shaking) - add typescript compilation to next-server - Remove last remains of Flow - Move hoist-non-react-statics to next, out of next-server - Move htmlescape to next, out of next-server - Remove runtime-corejs2 from next-server
44 lines
1.3 KiB
JavaScript
44 lines
1.3 KiB
JavaScript
'use strict'
|
|
try {
|
|
const ts = require('typescript')
|
|
const extname = require('path').extname
|
|
const config = require('./tsconfig.json')
|
|
|
|
module.exports = function (task) {
|
|
task.plugin('typescript', { every: true }, function * (file, options) {
|
|
const opts = {
|
|
fileName: file.base,
|
|
compilerOptions: {
|
|
...config.compilerOptions,
|
|
...options
|
|
}
|
|
}
|
|
|
|
const ext = extname(file.base)
|
|
// For example files without an extension don't have to be rewritten
|
|
if (ext) {
|
|
// Replace `.ts` with `.js`
|
|
const extRegex = new RegExp(ext.replace('.', '\\.') + '$', 'i')
|
|
file.base = file.base.replace(extRegex, '.js')
|
|
}
|
|
|
|
// compile output
|
|
const result = ts.transpileModule(file.data.toString(), opts)
|
|
|
|
if (opts.compilerOptions.sourceMap && result.sourceMapText) {
|
|
// add sourcemap to `files` array
|
|
this._.files.push({
|
|
dir: file.dir,
|
|
base: `${file.base}.map`,
|
|
data: Buffer.from(JSON.stringify(result.sourceMapText), 'utf8')
|
|
})
|
|
}
|
|
|
|
// update file's data
|
|
file.data = Buffer.from(result.outputText.replace(/process\.env\.NEXT_VERSION/, `"${require('./package.json').version}"`), 'utf8')
|
|
})
|
|
}
|
|
} catch (err) {
|
|
console.error(err)
|
|
}
|