from this
import Head from '~components/Commons/Head';
require('~images/test.jpg')
to this
import Head from './../Commons/Head';
require('./../../images/test.jpg')
| var gulp = require('gulp') | |
| var tsimport = require('./tsimport') | |
| gulp.task('compile:source', function (done) { | |
| var tsProject = require('./tsconfig.json') | |
| gulp.src(['build/src/**/*.ts', 'build/src/**/*.js']) | |
| .pipe(tsimport(tsProject.compilerOptions)) | |
| .on('error', function (error) { | |
| console.log('[Typescript] Server Error:', error.stack) | |
| this.emit('end') | |
| }) | |
| .pipe(gulp.dest('dist/')) | |
| .on('end', () => { | |
| gulp.src('src/images/**/*') | |
| .pipe(gulp.dest('dist/images')) | |
| .on('end', done) | |
| }) | |
| }) |
| { | |
| "scripts": { | |
| "android": "npm run build && concurrently -r 'npm run watch' 'react-native run-android'", | |
| "tsc": "tsc", | |
| "clean": "rimraf build && rimraf dist", | |
| "build": "npm run clean && npm run tsc:grep && gulp compile:source", | |
| "watch": "npm run build -- -w" | |
| } | |
| } |
| var fs = require('fs') | |
| var path = require('path') | |
| module.exports = function (code, filePath, importOptions) { | |
| var tscpaths = Object.keys(importOptions.paths) | |
| var lines = code.split('\n') | |
| return lines.map((line) => { | |
| var matches = [] | |
| var requireMatches = line.match(/require\(('|')(.*)('|')\)/g) | |
| var importMatches = line.match(/import (.*)('|')(.*)('|')/g) | |
| Array.prototype.push.apply(matches, requireMatches) | |
| Array.prototype.push.apply(matches, importMatches) | |
| if (!matches || matches.length === 0) { | |
| return line | |
| } | |
| // Go through each require statement | |
| for (var match of matches) { | |
| // Find each paths | |
| for (var tscpath of tscpaths) { | |
| // Find required module & check if its path matching what is described in the paths config. | |
| var requiredModules = match.match(new RegExp(tscpath, 'g')) | |
| if (requiredModules && requiredModules.length > 0) { | |
| for (var requiredModule of requiredModules) { | |
| // Skip if it resolves to the node_modules folder | |
| var modulePath = path.resolve('./node_modules/' + tscpath) | |
| if (fs.existsSync(modulePath)) { | |
| continue | |
| } | |
| // Get relative path and replace | |
| var sourcePath = path.dirname(filePath) | |
| var targetPath = path.dirname(path.resolve(importOptions.outDir + '/' + importOptions.baseUrl + '/' + importOptions.paths[tscpath])) | |
| var relativePath = path.relative(sourcePath, targetPath) | |
| line = line.replace(new RegExp(tscpath, 'g'), './' + relativePath + '/') | |
| } | |
| } | |
| } | |
| } | |
| return line | |
| }).join('\n') | |
| } |
| { | |
| "compilerOptions": { | |
| "target": "esnext", | |
| "moduleResolution": "classic", | |
| "jsx": "react-native", | |
| "outDir": "build", | |
| "rootDir": "src", | |
| "baseUrl": "./src", | |
| "paths": { | |
| "~components/*" : ["./components/*"], | |
| "~images/*" : ["./images/*"], | |
| } | |
| } | |
| } |
| var through = require('through2') | |
| var replacePath = require('./replace-path.js') | |
| module.exports = function (importOptions) { | |
| return through.obj(function (file, enc, cb) { | |
| if (!file.contents) { | |
| return | |
| } | |
| var code = file.contents.toString('utf8') | |
| code = replacePath(code, file.history.toString(), importOptions) | |
| file.contents = Buffer.from(code) | |
| this.push(file) | |
| cb() | |
| }) | |
| } |
Double quotes?
var requireMatches = line.match(/require\(('|')(.*)('|')\)/g)