just icon indicating copy to clipboard operation
just copied to clipboard

enableTypeScript function always skipProject set true

Open imjuni opened this issue 5 years ago • 1 comments

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?

imjuni avatar Apr 02 '20 03:04 imjuni

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?

imjuni avatar Apr 02 '20 14:04 imjuni