Strip shebang when present in JS files

Summary:Fixes #7034
Closes https://github.com/facebook/react-native/pull/7073

Differential Revision: D3199816

fb-gh-sync-id: 2099dd1f81b030933794be6a592a697cec3627d0
fbshipit-source-id: 2099dd1f81b030933794be6a592a697cec3627d0
This commit is contained in:
Mike Grabowski 2016-04-19 18:08:59 -07:00 committed by Facebook Github Bot 2
parent f0e4826c46
commit ae9f74e68d
2 changed files with 17 additions and 1 deletions

View File

@ -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));

View File

@ -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