diff --git a/packager/react-packager/src/JSTransformer/worker/__tests__/worker-test.js b/packager/react-packager/src/JSTransformer/worker/__tests__/worker-test.js index b08035098..b66dabe2a 100644 --- a/packager/react-packager/src/JSTransformer/worker/__tests__/worker-test.js +++ b/packager/react-packager/src/JSTransformer/worker/__tests__/worker-test.js @@ -68,7 +68,20 @@ describe('code transformation worker:', () => { done(); }); }); - + + it('removes shebang when present', done => { + const shebang = '#!/usr/bin/env node'; + const result = { + code: `${shebang} \n arbitrary(code)`, + }; + transform.mockImplementation((_, callback) => callback(null, result)); + transformCode(transform, 'arbitrary/file.js', 'b', {}, (_, data) => { + expect(data.code).not.toContain(shebang); + expect(data.code.split('\n').length).toEqual(result.code.split('\n').length); + done(); + }); + }); + it('calls back with any error yielded by the transform', done => { const error = Error('arbitrary error'); transform.mockImplementation((_, callback) => callback(error)); diff --git a/packager/react-packager/src/JSTransformer/worker/index.js b/packager/react-packager/src/JSTransformer/worker/index.js index 1b68feaed..a767f9996 100644 --- a/packager/react-packager/src/JSTransformer/worker/index.js +++ b/packager/react-packager/src/JSTransformer/worker/index.js @@ -43,6 +43,9 @@ function transformCode(transform, filename, sourceCode, options, callback) { if (isJson) { code = code.replace(/^\w+\.exports=/, ''); + } else { + // Remove shebang + code = code.replace(/^#!.*/, ''); } const result = isJson || options.extern