just
just copied to clipboard
enableTypeScript function always skipProject set true
Hi,
Thank you for best task runner development,
I want to use just.config .ts not just.config .js
But just-script not pass TS_NODE_PROJECT environment variable to internal ts-node processor.
This cause error from nullish operator in just.config.ts
obj[key] = process.env[key] ?? envObj[key];
^
SyntaxError: Unexpected token '?'
How can I pass TS_NODE_PROJECT to just-scripts?
I use just.config.ts file below,
task('hello', async () => {
const envObj: { [key: string]: string } = {
DEBUG: 'tjscli:*',
TS_NODE_PROJECT: './tsconfig.prod.json',
};
const env = Object.entries(
Object.keys(envObj).reduce<{ [key: string]: string | undefined }>((obj, key) => {
// obj[key] = process.env[key] !== undefined ? process.env[key] : envObj[key];
obj[key] = process.env[key] ?? envObj[key];
return obj;
}, {}),
)
.map(([key, value]) => `${key}=${value}`)
.join(' ');
});
ts-node compiler cannot compile nullish coalescing operator. Because enableTypeScript function set skipProject always set true.
function enableTypeScript({ transpileOnly = true }) {
const tsNodeModule = resolve_1.resolve('ts-node');
if (tsNodeModule) {
const tsNode = require(tsNodeModule);
tsNode.register({
transpileOnly,
skipProject: true,
compilerOptions: {
target: 'esnext', // this line cause problem
I think change below
function enableTypeScript({ transpileOnly = true }) {
const tsNodeModule = resolve_1.resolve('ts-node');
if (tsNodeModule) {
const tsNode = require(tsNodeModule);
tsNode.register({
transpileOnly,
skipProject: ture,
compilerOptions: {
target: 'es2017', // this line cause problem
finally I found problem and solution. I system below,
- node v12.14.1
- typescript 3.8.3
Node.js 12.14.1 ~ 12.16.1 not support ?? operator. I have to use stable version of Node.js. Because AWS only support 12.16.1.
Any idea?